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:
Daniel Eklöf 2020-02-24 22:38:35 +01:00
parent 2798807853
commit 7f270a9f01
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 36 additions and 0 deletions

View file

@ -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;
}