pan/pinch: delete start_timer and set START state when all fingers are pressed
authorduna.oh <duna.oh@samsung.com>
Tue, 26 Nov 2024 10:51:43 +0000 (19:51 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 13 Jan 2025 10:48:41 +0000 (19:48 +0900)
Change-Id: I200deab12d4e5a3708e1fd46441e7ebd7b6bd62e

src/e_mod_gesture_events.c

index 7c066c22008d37d7b1114e0f2f62121a2639c38c..957769a5749667f196b51a794f24cd04530b91c4 100644 (file)
@@ -975,6 +975,7 @@ _e_gesture_pan_cancel(void)
      }
 
    gesture->gesture_filter |= E_GESTURE_TYPE_PAN;
+   GTINF("Pan state changed. %d -> %d", pans->state, E_GESTURE_PANPINCH_STATE_DONE);
    pans->state = E_GESTURE_PANPINCH_STATE_DONE;
 }
 
@@ -990,6 +991,8 @@ _e_gesture_timer_pan_start(void *data)
         _e_gesture_util_center_axis_get(num_pressed, &start_point.x, &start_point.y);
         pans->start_point.x = pans->center_point.x = start_point.x;
         pans->start_point.y = pans->center_point.y = start_point.y;
+        GTINF("Pan state changed. %d -> %d start_point : (%d, %d)", pans->state, E_GESTURE_PANPINCH_STATE_START,
+              pans->start_point.x, pans->start_point.y);
         pans->state = E_GESTURE_PANPINCH_STATE_START;
      }
    else
@@ -1023,25 +1026,39 @@ _e_gesture_process_pan_down(Ecore_Event_Mouse_Button *ev)
 {
    E_Gesture_Event_Pan *pans = &gesture->gesture_events.pans;
    E_Gesture_Conf_Edd *conf = gesture->config->conf;
+   int num_pressed = gesture->gesture_events.num_pressed;
+   Coords start_point = {0, };
 
    if (!_e_gesture_pan_condition_check(pans))
      {
         return;
      }
 
-   if (gesture->gesture_events.num_pressed > 1)
+   if (num_pressed > 1)
      {
         if (!_e_gesture_process_distance_check(ev->multi.device,
                                                ev->x, ev->y, gesture->gesture_events.num_pressed))
           _e_gesture_pan_cancel();
      }
 
-   if (gesture->gesture_events.num_pressed == 1)
+   if (num_pressed == 1)
      {
+        GTINF("Pan state changed. %d -> %d", pans->state, E_GESTURE_PANPINCH_STATE_READY);
         pans->state = E_GESTURE_PANPINCH_STATE_READY;
         if (pans->start_timer) ecore_timer_del(pans->start_timer);
         pans->start_timer = ecore_timer_add(conf->pan.time_start, _e_gesture_timer_pan_start, NULL);
      }
+   else if (pans->fingers[num_pressed].client)
+     {
+        _e_gesture_util_center_axis_get(num_pressed, &start_point.x, &start_point.y);
+        pans->start_point.x = pans->center_point.x = start_point.x;
+        pans->start_point.y = pans->center_point.y = start_point.y;
+        GTINF("Pan state changed. %d -> %d start_point : (%d, %d)", pans->state, E_GESTURE_PANPINCH_STATE_START,
+              pans->start_point.x, pans->start_point.y);
+        pans->state = E_GESTURE_PANPINCH_STATE_START;
+        ecore_timer_del(pans->start_timer);
+        pans->start_timer = NULL;
+     }
 }
 
 static void
@@ -1079,6 +1096,7 @@ _e_gesture_process_pan_move(Ecore_Event_Mouse_Move *ev)
           {
              case E_GESTURE_PANPINCH_STATE_START:
                 mode = E_GESTURE_MODE_BEGIN;
+                GTINF("Pan state changed. %d -> %d", pans->state, E_GESTURE_PANPINCH_STATE_MOVING);
                 pans->state = E_GESTURE_PANPINCH_STATE_MOVING;
                 pans->num_pan_fingers = idx;
                 break;
@@ -1158,6 +1176,7 @@ _e_gesture_pinch_cancel(void)
                            pinchs->fingers[pinchs->num_pinch_fingers].client);
 
    gesture->gesture_filter |= E_GESTURE_TYPE_PINCH;
+   GTINF("Pinch state changed. %d -> %d", pinchs->state, E_GESTURE_PANPINCH_STATE_DONE);
    pinchs->state = E_GESTURE_PANPINCH_STATE_DONE;
 }
 
@@ -1170,6 +1189,8 @@ _e_gesture_timer_pinch_start(void *data)
    if (pinch->fingers[num_pressed].client)
      {
         pinch->distance = _e_gesture_util_distances_get(num_pressed);
+        GTINF("Pinch state changed. %d -> %d distance : %lf", pinch->state, E_GESTURE_PANPINCH_STATE_START,
+              pinch->distance);
         pinch->state = E_GESTURE_PANPINCH_STATE_START;
      }
    else
@@ -1185,6 +1206,7 @@ _e_gesture_process_pinch_down(Ecore_Event_Mouse_Button *ev)
 {
    E_Gesture_Event_Pinch *pinch = &gesture->gesture_events.pinchs;
    E_Gesture_Conf_Edd *conf = gesture->config->conf;
+   int num_pressed = gesture->gesture_events.num_pressed;
 
    if (!pinch->activation.active)
      {
@@ -1197,12 +1219,22 @@ _e_gesture_process_pinch_down(Ecore_Event_Mouse_Button *ev)
        (gesture->gesture_events.recognized_gesture & E_GESTURE_TYPE_PINCH)))
      _e_gesture_pinch_cancel();
 
-   if (gesture->gesture_events.num_pressed == 1)
+   if (num_pressed == 1)
      {
+        GTINF("Pinch state changed. %d -> %d", pinch->state, E_GESTURE_PANPINCH_STATE_READY);
         pinch->state = E_GESTURE_PANPINCH_STATE_READY;
         if (pinch->start_timer) ecore_timer_del(pinch->start_timer);
         pinch->start_timer = ecore_timer_add(conf->pan.time_start, _e_gesture_timer_pinch_start, NULL);
      }
+   else if (pinch->fingers[num_pressed].client)
+     {
+        pinch->distance = _e_gesture_util_distances_get(num_pressed);
+        GTINF("Pinch state changed. %d -> %d distance : %lf", pinch->state, E_GESTURE_PANPINCH_STATE_START,
+              pinch->distance);
+        pinch->state = E_GESTURE_PANPINCH_STATE_START;
+        ecore_timer_del(pinch->start_timer);
+        pinch->start_timer = NULL;
+     }
 }
 
 static void
@@ -1238,6 +1270,8 @@ _e_gesture_process_pinch_move(Ecore_Event_Mouse_Move *ev)
           {
              case E_GESTURE_PANPINCH_STATE_START:
                 mode = E_GESTURE_MODE_BEGIN;
+                GTINF("Pinch state changed. %d -> %d distance : %lf", pinch->state, E_GESTURE_PANPINCH_STATE_MOVING,
+                      pinch->distance);
                 pinch->state = E_GESTURE_PANPINCH_STATE_MOVING;
                 pinch->num_pinch_fingers = idx;
                 break;