e_comp_wl: retrieve the current seat if no seat info is provided from events 62/325062/1
authorduna.oh <duna.oh@samsung.com>
Mon, 2 Jun 2025 05:57:38 +0000 (14:57 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 2 Jun 2025 06:50:36 +0000 (15:50 +0900)
This patch fixes the issue that key events are not processed
when events doesn't provide the device(seat) infomation.

For example, E20 generates 'XF86Back' key event when mouse's right button
is clicked. In this case, no keyboard device is provided from event.

Change-Id: Ib393294cc9d7c2a36dd612612459936823565ee7

src/bin/inputmgr/e_keyrouter_event.c
src/bin/server/e_comp_wl.c
src/bin/server/e_keyrouter_wl.c

index 025cc45130b406286ea43790b0d2fedd38d91a2c..6abdc1e0d1d0bde81610ec8cfa4916416019427b 100644 (file)
@@ -382,10 +382,8 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev, E_Device *dev)
    Eina_List *l = NULL, *shared_ptr_list = NULL;
 
    seat_name = e_device_seatname_get(dev);
-   if ((seat_name) && (seat = e_seat_find(seat_name)))
-     zone = e_seat_zone_get(seat);
-   if (!zone)
-     zone = e_comp_default_zone_get(e_comp_get());
+   seat = seat_name ? e_seat_find(seat_name) : e_seat_current_get();
+   zone = e_seat_zone_get(seat);
 
    ec_focus = e_zone_focused_client_get(zone);
    ELOGF("KRT", "Key Process. seat:%s zone_id:%d", ec_focus, seat_name, e_zone_id_get(zone));
index e35fff840f29faa26c9e6b9ac31d12dd683bccf9..8b3f6d520671e6a06170a964787e7a54fa1cf1c1 100644 (file)
@@ -4062,10 +4062,8 @@ _e_comp_wl_key_down(Ecore_Event_Key *ev, E_Device *dev)
    if ((!e_client_action_get()) && (!comp->input_key_grabs))
      {
         seat_name = e_device_seatname_get(dev);
-        if ((seat_name) && (seat = e_seat_find(seat_name)))
-          zone = e_seat_zone_get(seat);
-        if (!zone)
-          zone = e_comp_default_zone_get(comp);
+        seat = seat_name ? e_seat_find(seat_name) : e_seat_current_get();
+        zone = e_seat_zone_get(seat);
 
         /* ignore server-generated key repeats */
         if (e_seat_keyboard_keys_has_keycode(seat, keycode))
@@ -4110,10 +4108,8 @@ _e_comp_wl_key_up(Ecore_Event_Key *ev, E_Device *dev)
 
    comp = e_comp_get();
    seat_name = e_device_seatname_get(dev);
-   if ((seat_name) && (seat = e_seat_find(seat_name)))
-     zone = e_seat_zone_get(seat);
-   if (!zone)
-     zone = e_comp_default_zone_get(comp);
+   seat = seat_name ? e_seat_find(seat_name) : e_seat_current_get();
+   zone = e_seat_zone_get(seat);
 
    delivered = e_seat_keyboard_keys_keydata_remove(seat, keycode);
    if (!delivered)
index 51bc1e6c39b944602c219841acbe8278c8f1a95a..1ff2c57738b0dc2dd9563c7cc6083914eb57aeb2 100644 (file)
@@ -235,10 +235,8 @@ e_keyrouter_wl_key_send(Ecore_Event_Key *ev, E_Device *dev, Eina_Bool pressed, s
    if ((!e_client_action_get()) && (comp && !comp->input_key_grabs))
      {
         seat_name = e_device_seatname_get(dev);
-        if ((seat_name) && (seat = e_seat_find(seat_name)))
-          zone = e_seat_zone_get(seat);
-        if (!zone)
-          zone = e_comp_default_zone_get(comp);
+        seat = seat_name ? e_seat_find(seat_name) : e_seat_current_get();
+        zone = e_seat_zone_get(seat);
 
         ec = e_zone_focused_client_get(zone);
         ELOGF("KRT", "Key Send. seat:%s zone_id:%d", ec, seat_name, e_zone_id_get(zone));