mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-21 01:40:16 -05:00
term: add term_surface_kind(), and track currently active surface
This is needed to handle pointer motion and button events correctly, since mouse actions in e.g. CSD surfaces are very different from mouse actions in the main window.
This commit is contained in:
parent
2798807853
commit
7f270a9f01
2 changed files with 36 additions and 0 deletions
21
terminal.c
21
terminal.c
|
|
@ -2133,3 +2133,24 @@ term_print(struct terminal *term, wchar_t wc, int width)
|
|||
else
|
||||
term->cursor.lcf = true;
|
||||
}
|
||||
|
||||
enum term_surface
|
||||
term_surface_kind(const struct terminal *term, const struct wl_surface *surface)
|
||||
{
|
||||
if (surface == term->window->surface)
|
||||
return TERM_SURF_GRID;
|
||||
else if (surface == term->window->search_surface)
|
||||
return TERM_SURF_SEARCH;
|
||||
else if (surface == term->window->csd.surface[0])
|
||||
return TERM_SURF_TITLE;
|
||||
else if (surface == term->window->csd.surface[1])
|
||||
return TERM_SURF_BORDER_LEFT;
|
||||
else if (surface == term->window->csd.surface[2])
|
||||
return TERM_SURF_BORDER_RIGHT;
|
||||
else if (surface == term->window->csd.surface[3])
|
||||
return TERM_SURF_BORDER_TOP;
|
||||
else if (surface == term->window->csd.surface[4])
|
||||
return TERM_SURF_BORDER_BOTTOM;
|
||||
else
|
||||
return TERM_SURF_NONE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue