Fix edge grab shared mode send error 48/325648/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 13 Jun 2025 02:29:59 +0000 (11:29 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 13 Jun 2025 02:30:03 +0000 (11:30 +0900)
AS-IS : Cannot send shared mode grab event, even though edge position is not exclusive partial set area.
TO-BE : Send edge event to shared mode grab area touch, if that position is not exclusive partial set area.

Change-Id: I3668107397a33832ba31f21b98bc46b70881144b
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/e_mod_gesture_events.c

index 10a4346362971e08213dfd522fac40543c717f84..afca9242fe2258b0a9036b87cd984c8293d095c3 100644 (file)
@@ -419,6 +419,7 @@ _e_gesture_send_edge_swipe(int fingers, int x, int y, int edge)
    E_Gesture_Event_Edge_Finger_Edge *edata;
    E_Gesture_Event_Edge_Swipe *edge_swipes = &gesture->gesture_events.edge_swipes;
    int bp = -1;
+   Eina_Bool exclusive_send = EINA_FALSE;
 
    if (gesture->gesture_events.event_keep)
      {
@@ -453,11 +454,13 @@ _e_gesture_send_edge_swipe(int fingers, int x, int y, int edge)
              if (bp >= edata->sp && bp <= edata->ep)
                {
                   _e_gestue_send_edge_swipe_event(edata, fingers, x, y, edge);
+                  exclusive_send = EINA_TRUE;
                   break;
                }
           }
      }
-   else
+
+   if (exclusive_send == EINA_FALSE)
      {
         EINA_LIST_FOREACH(edge_swipes->base.fingers[fingers].edge[edge], l, edata)
           {
@@ -775,6 +778,7 @@ _e_gesture_send_edge_drag(int fingers, int x, int y, int edge, int mode)
    E_Gesture_Event_Edge_Finger_Edge *edata;
    E_Gesture_Event_Edge_Drag *edge_drags = &gesture->gesture_events.edge_drags;
    int bp = -1;
+   Eina_Bool exclusive_send = EINA_FALSE;
 
    if (gesture->gesture_events.event_keep)
      {
@@ -801,11 +805,13 @@ _e_gesture_send_edge_drag(int fingers, int x, int y, int edge, int mode)
              if (bp >= edata->sp && bp <= edata->ep)
                {
                   _e_gesture_send_edge_drag_event(edata, fingers, x, y, edge, mode);
+                  exclusive_send = EINA_TRUE;
                   break;
                }
           }
      }
-   else
+
+   if (exclusive_send == EINA_FALSE)
      {
         EINA_LIST_FOREACH(edge_drags->base.fingers[fingers].edge[edge], l, edata)
           {