[PATCH] desktop-shell: Track focused shell surface by main surface

Philipp Kerling pkerling at casix.org
Wed Jul 26 10:02:15 UTC 2017


The focused surface is used for determining whether shell surfaces
are activated. They should also be considered activated when a
subsurface has focus. Inserting a call to
weston_surface_get_main_surface fixes this.

seat->focused_surface is only used for shell_surface keyboard focus
tracking.
---
 desktop-shell/shell.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 832a7b74..4608cf2f 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -1852,7 +1852,7 @@ handle_keyboard_focus(struct wl_listener *listener, void *data)
 			shell_surface_lose_keyboard_focus(shsurf);
 	}
 
-	seat->focused_surface = keyboard->focus;
+	seat->focused_surface = weston_surface_get_main_surface(keyboard->focus);
 
 	if (seat->focused_surface) {
 		struct shell_surface *shsurf = get_shell_surface(seat->focused_surface);


More information about the wayland-devel mailing list