diff --git a/terminal.h b/terminal.h index a1c01942..e4eafe77 100644 --- a/terminal.h +++ b/terminal.h @@ -276,6 +276,7 @@ struct terminal { struct wayland *wl; struct wl_window *window; + bool visual_focus; struct { int scrollback_lines; diff --git a/wayland.c b/wayland.c index 380cc526..80300aba 100644 --- a/wayland.c +++ b/wayland.c @@ -411,12 +411,21 @@ xdg_toplevel_configure(void *data, struct xdg_toplevel *xdg_toplevel, { LOG_DBG("xdg-toplevel: configure: %dx%d", width, height); - if (width <= 0 || height <= 0) - return; - struct wayland *wayl = data; struct terminal *term = wayl_terminal_from_xdg_toplevel(wayl, xdg_toplevel); - render_resize(term, width, height); + + bool is_focused = false; + enum xdg_toplevel_state *state; + wl_array_for_each(state, states) { + if (*state == XDG_TOPLEVEL_STATE_ACTIVATED) { + is_focused = true; + } + } + + term->visual_focus = is_focused; + + if (width >= 0 && height >= 0) + render_resize(term, width, height); } static void