From 8eb361dd3da37eb515963a63fa9ffe8f86d0b17b Mon Sep 17 00:00:00 2001 From: jeon Date: Thu, 27 Jun 2019 16:03:39 +0900 Subject: [PATCH] fix bug: gesture is deactivated when focus is changed. Change-Id: I4b5fc3a36f9bda135518818b09baabee320e217f --- src/e_mod_gesture_events.c | 112 ++++++++++++++++++++++++++------------------- src/e_mod_main.c | 1 - src/e_mod_main.h | 1 - 3 files changed, 65 insertions(+), 49 deletions(-) diff --git a/src/e_mod_gesture_events.c b/src/e_mod_gesture_events.c index 93d7658..ba5da51 100644 --- a/src/e_mod_gesture_events.c +++ b/src/e_mod_gesture_events.c @@ -485,7 +485,11 @@ _e_gesture_process_edge_swipe_down(Ecore_Event_Mouse_Button *ev) int i; unsigned int idx = ev->multi.device+1; - if (!edge_swipes->base.activation.active) return; + if (!edge_swipes->base.activation.active) + { + _e_gesture_edge_swipe_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture) _e_gesture_edge_swipe_cancel(); @@ -548,7 +552,11 @@ _e_gesture_process_edge_swipe_move(Ecore_Event_Mouse_Move *ev) Coords diff; unsigned int idx = ev->multi.device+1; - if (!edge_swipes->base.activation.active) return; + if (!edge_swipes->base.activation.active) + { + _e_gesture_edge_swipe_cancel(); + return; + } if (!(edge_swipes->base.enabled_finger & (1 << idx))) return; @@ -621,7 +629,11 @@ _e_gesture_process_edge_swipe_up(Ecore_Event_Mouse_Button *ev) { E_Gesture_Event_Edge_Swipe *edge_swipes = &gesture->gesture_events.edge_swipes; - if (!edge_swipes->base.activation.active) return; + if (!edge_swipes->base.activation.active) + { + _e_gesture_edge_swipe_cancel(); + return; + } _e_gesture_edge_swipe_cancel(); if (gesture->gesture_events.event_keep) _e_gesture_event_flush(); @@ -759,7 +771,11 @@ _e_gesture_process_edge_drag_down(Ecore_Event_Mouse_Button *ev) int i; unsigned int idx = ev->multi.device+1; - if (!edge_drags->base.activation.active) return; + if (!edge_drags->base.activation.active) + { + _e_gesture_edge_drag_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture) _e_gesture_edge_drag_cancel(); @@ -822,7 +838,11 @@ _e_gesture_process_edge_drag_move(Ecore_Event_Mouse_Move *ev) Coords current_point = {0, }; unsigned int idx = ev->multi.device+1; - if (!edge_drags->base.activation.active) return; + if (!edge_drags->base.activation.active) + { + _e_gesture_edge_drag_cancel(); + return; + } if (!(edge_drags->base.enabled_finger & (1 << idx))) return; @@ -849,7 +869,11 @@ _e_gesture_process_edge_drag_up(Ecore_Event_Mouse_Button *ev) { E_Gesture_Event_Edge_Drag *edge_drags = &gesture->gesture_events.edge_drags; - if (!edge_drags->base.activation.active) return; + if (!edge_drags->base.activation.active) + { + _e_gesture_edge_drag_cancel(); + return; + } _e_gesture_edge_drag_cancel(); if (gesture->gesture_events.event_keep) _e_gesture_event_flush(); @@ -945,7 +969,11 @@ _e_gesture_process_pan_down(Ecore_Event_Mouse_Button *ev) { E_Gesture_Event_Pan *pans = &gesture->gesture_events.pans; - if (!pans->activation.active) return; + if (!pans->activation.active) + { + _e_gesture_pan_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture && !((gesture->gesture_events.recognized_gesture & E_GESTURE_TYPE_PAN) || @@ -967,7 +995,11 @@ _e_gesture_process_pan_move(Ecore_Event_Mouse_Move *ev) Coords cur_point = {0,}; int idx, diff_x, diff_y, mode; - if (!pans->activation.active) return; + if (!pans->activation.active) + { + _e_gesture_pan_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture && !((gesture->gesture_events.recognized_gesture & E_GESTURE_TYPE_PAN) || @@ -1014,7 +1046,6 @@ _e_gesture_process_pan_up(Ecore_Event_Mouse_Button *ev) { E_Gesture_Event_Pan *pans = &gesture->gesture_events.pans; - if (!pans->activation.active) return; _e_gesture_pan_cancel(); } @@ -1102,7 +1133,11 @@ _e_gesture_process_pinch_down(Ecore_Event_Mouse_Button *ev) { E_Gesture_Event_Pinch *pinch = &gesture->gesture_events.pinchs; - if (!pinch->activation.active) return; + if (!pinch->activation.active) + { + _e_gesture_pinch_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture && !((gesture->gesture_events.recognized_gesture & E_GESTURE_TYPE_PAN) || @@ -1124,7 +1159,11 @@ _e_gesture_process_pinch_move(Ecore_Event_Mouse_Move *ev) int idx, mode, cx = 0, cy = 0; double current_distance = 0.0, diff = 0.0, angle = 0.0; - if (!pinch->activation.active) return; + if (!pinch->activation.active) + { + _e_gesture_pinch_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture && !((gesture->gesture_events.recognized_gesture & E_GESTURE_TYPE_PAN) || @@ -1172,7 +1211,6 @@ _e_gesture_process_pinch_up(Ecore_Event_Mouse_Button *ev) { E_Gesture_Event_Pinch *pinch = &gesture->gesture_events.pinchs; - if (!pinch->activation.active) return; _e_gesture_pinch_cancel(); } @@ -1394,7 +1432,11 @@ _e_gesture_process_tap_down(Ecore_Event_Mouse_Button *ev) { E_Gesture_Event_Tap *taps = &gesture->gesture_events.taps; - if (!taps->activation.active) return; + if (!taps->activation.active) + { + _e_gesture_tap_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture) _e_gesture_tap_cancel(); @@ -1455,7 +1497,11 @@ _e_gesture_process_tap_move(Ecore_Event_Mouse_Move *ev) Rect current_rect = {0, }; int xx1, yy1, xx2, yy2; - if (!taps->activation.active) return; + if (!taps->activation.active) + { + _e_gesture_tap_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture) _e_gesture_tap_cancel(); @@ -1482,7 +1528,11 @@ _e_gesture_process_tap_up(Ecore_Event_Mouse_Button *ev) { E_Gesture_Event_Tap *taps = &gesture->gesture_events.taps; - if (!taps->activation.active) return; + if (!taps->activation.active) + { + _e_gesture_tap_cancel(); + return; + } if (gesture->gesture_events.recognized_gesture) _e_gesture_tap_cancel(); @@ -1864,38 +1914,6 @@ _e_gesture_process_axis_update(void *event) return E_GESTURE_EVENT_STATE_PROPAGATE; } -void -e_gesture_event_deactivate_check(void) -{ - if (gesture->gesture_events.num_pressed <= 0) return; - if (gesture->gesture_filter == E_GESTURE_TYPE_ALL) return; - - if (!(gesture->gesture_filter & E_GESTURE_TYPE_EDGE_SWIPE) && - gesture->gesture_events.edge_swipes.base.activation.active) - { - _e_gesture_edge_swipe_cancel(); - } - - if (!(gesture->gesture_filter & E_GESTURE_TYPE_TAP) && - gesture->gesture_events.taps.activation.active) - { - _e_gesture_tap_cancel(); - } - - if (!(gesture->gesture_filter & E_GESTURE_TYPE_PAN) && - gesture->gesture_events.pans.activation.active) - { - _e_gesture_pan_cancel(); - } - - if (!(gesture->gesture_filter & E_GESTURE_TYPE_PINCH) && - gesture->gesture_events.pinchs.activation.active) - { - _e_gesture_pinch_cancel(); - } - -} - /* Function for checking the existing grab for a key and sending key event(s) */ Eina_Bool e_gesture_process_events(void *event, int type) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 590219f..9ab63cd 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -1705,7 +1705,6 @@ _e_gesture_cb_client_focus_in(void *data, int type, void *event) _e_gesture_window_gesture_disabled_change(ec); _e_gesture_deactivate_surface_check(ec); - e_gesture_event_deactivate_check(); return ECORE_CALLBACK_PASS_ON; } diff --git a/src/e_mod_main.h b/src/e_mod_main.h index 680cda8..953a63d 100644 --- a/src/e_mod_main.h +++ b/src/e_mod_main.h @@ -405,7 +405,6 @@ E_API void *e_modapi_init(E_Module *m); E_API int e_modapi_shutdown(E_Module *m); E_API int e_modapi_save(E_Module *m); -void e_gesture_event_deactivate_check(void); Eina_Bool e_gesture_process_events(void *event, int type); int e_gesture_type_convert(uint32_t type); -- 2.7.4