e_seat: find the focused ec of zone when add resource to kbd.focused list 33/321333/1
authorduna.oh <duna.oh@samsung.com>
Fri, 14 Mar 2025 12:24:30 +0000 (21:24 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 19 Mar 2025 05:04:16 +0000 (14:04 +0900)
Change-Id: Icb1e338d9a439a2a8c507b74555f81ff92a507b3

src/bin/server/e_seat.c

index e5892ce42510cae1e75482b73358424538f1ceca..d1aaf5f19c67e172ad4d08cf4f846398cb301e51 100644 (file)
@@ -9,6 +9,7 @@
 #include "e_pointer_intern.h"
 #include "e_policy_intern.h"
 #include "e_utils_intern.h"
+#include "e_zone_intern.h"
 
 struct _E_Seat
 {
@@ -354,8 +355,10 @@ _e_seat_cb_keyboard_get(struct wl_client *client, struct wl_resource *resource,
 {
    struct wl_resource *res;
    struct wl_listener *destroy_listener = NULL;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
    E_Client *focused = NULL;
+   E_Seat *seat;
+   seat = wl_resource_get_user_data(resource);
+   if (!seat) return;
 
    /* try to create keyboard resource */
    res = wl_resource_create(client, &wl_keyboard_interface,
@@ -374,7 +377,7 @@ _e_seat_cb_keyboard_get(struct wl_client *client, struct wl_resource *resource,
    g_rec_mutex_unlock(&e_comp_input_key->kbd.resources_mutex);
 
    wl_resource_set_implementation(res, &_e_keyboard_interface,
-                                  comp_wl,
+                                  seat,
                                   _e_seat_cb_keyboard_unbind);
 
    /* send current repeat_info */
@@ -389,7 +392,7 @@ _e_seat_cb_keyboard_get(struct wl_client *client, struct wl_resource *resource,
    TRACE_INPUT_END();
 
    /* if the client owns the focused surface, we need to send an enter */
-   focused = e_client_focused_get();
+   focused = e_zone_focused_client_get(seat->zone);
    if ((!focused) || (e_object_is_del(E_OBJECT(focused))) ||
        (!focused->comp_data)) return;