From ba1e2d618c2cf58b5e3602c68eefde7180a2f99a Mon Sep 17 00:00:00 2001 From: "duna.oh" Date: Fri, 14 Mar 2025 20:44:27 +0900 Subject: [PATCH] surface_view: find the focused ec of zone when remove from kbd.focused list Change-Id: Ia9ee15c90d13fb584a02498ad27bd20e999af9a6 --- src/bin/server/e_surface_view.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/bin/server/e_surface_view.c b/src/bin/server/e_surface_view.c index b880bfe553..e1f7e80217 100644 --- a/src/bin/server/e_surface_view.c +++ b/src/bin/server/e_surface_view.c @@ -9,6 +9,7 @@ #include "e_surface_view_intern.h" #include "e_comp_input_intern.h" #include "e_view_client_intern.h" +#include "e_zone_intern.h" #include #include @@ -85,21 +86,31 @@ _surface_view_cb_surface_client_destroy(struct wl_listener *listener, void *data struct wl_resource *res, *surface_resource; struct wl_client *surface_client = NULL; Eina_List *l, *ll; + E_Zone *zone; surface_resource = e_surface_resource_get(view->surface); if (surface_resource) surface_client = wl_resource_get_client(surface_resource); + zone = e_comp_zone_find_by_ec(view->ec); + if (!zone) + { + ERR("surface_client_destroy: zone is NULL"); + zone = e_zone_current_get(); + } + if (surface_client && - (view->ec == e_client_focused_get())) + (view->ec == e_zone_focused_client_get(zone))) { g_rec_mutex_lock(&e_comp_input_key->kbd.focused_mutex); EINA_LIST_FOREACH_SAFE(e_comp_input_key->kbd.focused, l, ll, res) { if (wl_resource_get_client(res) == surface_client) - e_comp_input_key->kbd.focused = - eina_list_remove_list(e_comp_input_key->kbd.focused, l); + { + e_comp_input_key->kbd.focused = + eina_list_remove_list(e_comp_input_key->kbd.focused, l); + } } g_rec_mutex_unlock(&e_comp_input_key->kbd.focused_mutex); -- 2.34.1