Fix edge grab shared mode send error 50/325650/2
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:41:32 +0000 (11:41 +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 2498c7ddbae9be642342be64788c2faa9454e779..a42fd0e3fb27ca85075f7acafdd88d184f32e576 100644 (file)
@@ -418,6 +418,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)
      {
@@ -452,11 +453,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)
           {
@@ -768,6 +771,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)
      {
@@ -794,11 +798,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)
           {