surface_view: find the focused ec of zone when remove from kbd.focused list 32/321332/1
authorduna.oh <duna.oh@samsung.com>
Fri, 14 Mar 2025 11:44:27 +0000 (20:44 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 19 Mar 2025 05:04:16 +0000 (14:04 +0900)
Change-Id: Ia9ee15c90d13fb584a02498ad27bd20e999af9a6

src/bin/server/e_surface_view.c

index b880bfe553400d7e200a1550f0b49ff345a3e0a7..e1f7e80217e55d7bca5f5b2cc285b8c2599c06fc 100644 (file)
@@ -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 <stdlib.h>
 #include <wayland-util.h>
@@ -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);