From: duna.oh Date: Fri, 14 Mar 2025 11:44:27 +0000 (+0900) Subject: surface_view: find the focused ec of zone when remove from kbd.focused list X-Git-Tag: accepted/tizen/unified/20250320.120248~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ba1e2d618c2cf58b5e3602c68eefde7180a2f99a;p=platform%2Fupstream%2Fenlightenment.git surface_view: find the focused ec of zone when remove from kbd.focused list Change-Id: Ia9ee15c90d13fb584a02498ad27bd20e999af9a6 --- 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);