gesture, quickpanel: the type of gesture can be changed after creation, and each... 86/98586/2
authorSeunghun Lee <shiin.lee@samsung.com>
Mon, 14 Nov 2016 09:53:09 +0000 (18:53 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Tue, 22 Nov 2016 10:45:04 +0000 (02:45 -0800)
Change-Id: Ia930e0693a2ecfe07cd25d7b10b2166b9f06163a

src/bin/services/e_service_gesture.c
src/bin/services/e_service_gesture.h
src/bin/services/e_service_quickpanel.c
src/bin/services/e_service_region.c
src/bin/services/e_service_region.h

index 9e39b009d04cc8c50a09a05d7d2f80737722c286..8bb06fe86020c72e3254d962bfda17e5e7dce1b4 100644 (file)
@@ -215,6 +215,21 @@ e_service_gesture_del(E_Policy_Gesture *gesture)
    free(gesture);
 }
 
+EINTERN void
+e_service_gesture_type_set(E_Policy_Gesture *gesture, E_Policy_Gesture_Type type)
+{
+   EINA_SAFETY_ON_NULL_RETURN(gesture);
+
+   if (gesture->type == type)
+     return;
+
+   gesture->type = type;
+   if (type == POL_GESTURE_TYPE_NONE)
+     evas_object_repeat_events_set(gesture->obj, EINA_FALSE);
+   else
+     evas_object_repeat_events_set(gesture->obj, EINA_TRUE);
+}
+
 EINTERN void
 e_service_gesture_cb_set(E_Policy_Gesture *gesture, E_Policy_Gesture_Start_Cb cb_start, E_Policy_Gesture_Move_Cb cb_move, E_Policy_Gesture_End_Cb cb_end, void *data)
 {
index 4326f8750ca0249cb6d3899eb6b6eaceb352bc72..d2662fe1e5db486db58001ccd46dd62bf036f719 100644 (file)
@@ -18,6 +18,7 @@ typedef void (*E_Policy_Gesture_End_Cb)(void *data, Evas_Object *obj, int x, int
 
 EINTERN E_Policy_Gesture  *e_service_gesture_add(Evas_Object *obj, E_Policy_Gesture_Type type);
 EINTERN void          e_service_gesture_del(E_Policy_Gesture *gesture);
+EINTERN void          e_service_gesture_type_set(E_Policy_Gesture *gesture, E_Policy_Gesture_Type type);
 EINTERN void          e_service_gesture_cb_set(E_Policy_Gesture *gesture, E_Policy_Gesture_Start_Cb cb_start, E_Policy_Gesture_Move_Cb cb_move, E_Policy_Gesture_End_Cb cb_end, void *data);
 EINTERN void          e_service_gesture_angle_set(E_Policy_Gesture *gesture, int angle);
 
index 94e88d02f99a4c7db62d619c799a80784845ee48..6e642a1b4b998cae1de049c641f447969a2d9f86 100644 (file)
@@ -910,10 +910,11 @@ _quickpanel_handler_rect_add(E_Policy_Quickpanel *qp, E_Policy_Angle_Map ridx, i
    if (!obj)
      return;
 
-   e_service_region_cb_set(obj,
-                       _region_obj_cb_gesture_start,
-                       _region_obj_cb_gesture_move,
-                       _region_obj_cb_gesture_end, qp);
+   e_service_region_gesture_set(obj,
+                                POL_GESTURE_TYPE_NONE,
+                                _region_obj_cb_gesture_start,
+                                _region_obj_cb_gesture_move,
+                                _region_obj_cb_gesture_end, qp);
 
    /* Add handler object to smart member to follow the client's stack */
    evas_object_smart_member_add(obj, ec->frame);
@@ -1206,10 +1207,11 @@ _quickpanel_indicator_object_new(E_Policy_Quickpanel *qp)
    /* FIXME: make me move to explicit layer something like POL_LAYER */
    evas_object_layer_set(indi_obj, EVAS_LAYER_MAX - 1);
 
-   e_service_region_cb_set(indi_obj,
-                       _region_obj_cb_gesture_start,
-                       _region_obj_cb_gesture_move,
-                       _region_obj_cb_gesture_end, qp);
+   e_service_region_gesture_set(indi_obj,
+                                POL_GESTURE_TYPE_LINE,
+                                _region_obj_cb_gesture_start,
+                                _region_obj_cb_gesture_move,
+                                _region_obj_cb_gesture_end, qp);
 
    evas_object_show(indi_obj);
 
index f59f53bbbc2b73b59e892f5ba1101f7d617f011a..df162de1c846dfecbe8200a5c5b8c189a1b45d09 100644 (file)
@@ -152,7 +152,7 @@ err_event:
 }
 
 EINTERN Eina_Bool
-e_service_region_cb_set(Evas_Object *ro, E_Policy_Gesture_Start_Cb cb_start, E_Policy_Gesture_Move_Cb cb_move, E_Policy_Gesture_End_Cb cb_end, void *data)
+e_service_region_gesture_set(Evas_Object *ro, E_Policy_Gesture_Type type, E_Policy_Gesture_Start_Cb cb_start, E_Policy_Gesture_Move_Cb cb_move, E_Policy_Gesture_End_Cb cb_end, void *data)
 {
    E_Policy_Gesture *gesture;
 
@@ -161,12 +161,14 @@ e_service_region_cb_set(Evas_Object *ro, E_Policy_Gesture_Start_Cb cb_start, E_P
    INF("Set Callback function");
    if (!region->gesture)
      {
-        gesture = e_service_gesture_add(ro, POL_GESTURE_TYPE_LINE);
+        gesture = e_service_gesture_add(ro, type);
         if (!gesture)
           return EINA_FALSE;
 
         region->gesture = gesture;
      }
+   else
+     e_service_gesture_type_set(region->gesture, type);
 
    e_service_gesture_cb_set(region->gesture, cb_start, cb_move, cb_end, data);
 
index 93aa469bea63abec9e8ec032dcaac7d4705f908e..587f348efe96b40f10e3b7a5c170d5fd1d850f33 100644 (file)
@@ -9,6 +9,6 @@ typedef struct _E_Policy_Region E_Policy_Region;
 EINTERN Evas_Object        *e_service_region_object_new(void);
 EINTERN Eina_Bool           e_service_region_rectangle_set(Evas_Object *ro, E_Policy_Angle_Map ridx, int x, int y, int w, int h);
 EINTERN Eina_Bool           e_service_region_rectangle_get(Evas_Object *ro, E_Policy_Angle_Map ridx, int *x, int *y, int *w, int *h);
-EINTERN Eina_Bool           e_service_region_cb_set(Evas_Object *ro, E_Policy_Gesture_Start_Cb cb_start, E_Policy_Gesture_Move_Cb cb_move, E_Policy_Gesture_End_Cb cb_end, void *data);
+EINTERN Eina_Bool           e_service_region_gesture_set(Evas_Object *ro, E_Policy_Gesture_Type type, E_Policy_Gesture_Start_Cb cb_start, E_Policy_Gesture_Move_Cb cb_move, E_Policy_Gesture_End_Cb cb_end, void *data);
 
 #endif