aux hint hook added to enable/disable global gesture(s) for each e client 92/105192/4
authorSung-Jin Park <sj76.park@samsung.com>
Fri, 16 Dec 2016 02:36:48 +0000 (11:36 +0900)
committerJengHyun Kang <jhyuni.kang@samsung.com>
Fri, 16 Dec 2016 03:02:43 +0000 (12:02 +0900)
Change-Id: I63bc479805bac9e4899c45f80063e16b53f27166

src/e_mod_main.c
src/e_mod_main.h

index 95035cce98d7a97fb2b10519636b59e5fe25d9e5..a7c7d95749276420fcb215b0582b7a0958df3731 100644 (file)
@@ -319,17 +319,9 @@ _e_gesture_event_filter(void *data, void *loop_data EINA_UNUSED, int type, void
    return e_gesture_process_events(event, type);
 }
 
-static Eina_Bool
-_e_gesture_cb_client_focus_in(void *data, int type, void *event)
+static void
+_e_gesture_window_gesture_disabled_change(E_Client *ec)
 {
-   E_Client *ec;
-   E_Event_Client *ev = (E_Event_Client *)event;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON);
-   ec = ev->ec;
-   EINA_SAFETY_ON_NULL_RETURN_VAL(ec, ECORE_CALLBACK_PASS_ON);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(ec->comp_data, ECORE_CALLBACK_PASS_ON);
-
    if (ec->gesture_disable && gesture->enable)
      {
         GTINF("Gesture disabled window\n");
@@ -345,10 +337,39 @@ _e_gesture_cb_client_focus_in(void *data, int type, void *event)
      {
         e_gesture_event_filter_enable(gesture->enabled_window);
      }
+}
+
+static Eina_Bool
+_e_gesture_cb_client_focus_in(void *data, int type, void *event)
+{
+   E_Client *ec;
+   E_Event_Client *ev = (E_Event_Client *)event;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON);
+   ec = ev->ec;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(ec, ECORE_CALLBACK_PASS_ON);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(ec->comp_data, ECORE_CALLBACK_PASS_ON);
+
+   _e_gesture_window_gesture_disabled_change(ec);
 
    return ECORE_CALLBACK_PASS_ON;
 }
 
+static void
+_e_gesture_cb_aux_hint_change(void *data EINA_UNUSED, E_Client *ec)
+{
+   E_Comp_Wl_Aux_Hint *hint;
+   Eina_List *l;
+
+   if (e_object_is_del(E_OBJECT(ec)) || !ec->comp_data) return;
+   if (!ec->comp_data->aux_hint.changed) return;
+
+   /* Return if the aux hint change didn't happen to the focused ec */
+   if (ec != e_client_focused_get()) return;
+
+   _e_gesture_window_gesture_disabled_change(ec);
+}
+
 static void
 _e_gesture_init_handlers(void)
 {
@@ -377,7 +398,7 @@ _e_gesture_init(E_Module *m)
         goto err;
      }
 
-   /* Add filtering mechanism 
+   /* Add filtering mechanism
     * FIXME: Add handlers after first gesture is grabbed
     */
    _e_gesture_init_handlers();
@@ -419,7 +440,7 @@ _e_gesture_init(E_Module *m)
      }
 
    e_gesture_device_keydev_set(gesture->config->conf->key_device_name);
-
+   e_client_hook_add(E_CLIENT_HOOK_AUX_HINT_CHANGE, _e_gesture_cb_aux_hint_change, NULL);
    gesture->enable = EINA_TRUE;
 
    return gconfig;
@@ -520,4 +541,4 @@ e_gesture_event_filter_enable(Eina_Bool enabled)
         GTINF("Gestures will be enabled from now.\n");
         gesture->enable = EINA_FALSE;
      }
-}
\ No newline at end of file
+}
index 91799327245ffa5537156214fa5445b2a3a06085..bd894d5a1382d5b6fc8797347d6aa0aec676ab0a 100644 (file)
@@ -15,6 +15,7 @@
 #define E_GESTURE_TYPE_MAX TIZEN_GESTURE_TYPE_EDGE_SWIPE+1
 #define E_GESTURE_TYPE_ALL TIZEN_GESTURE_TYPE_EDGE_SWIPE
 #define E_GESTURE_KEYBOARD_NAME "Gesture Keyboard"
+#define E_GESTURE_AUX_HINT_GESTURE_DISABLE "wm.policy.win.gesture.disable"
 
 /* FIX ME: Set values in contiguration file, do not use definition */
 #define E_GESTURE_KEYBOARD_DEVICE "Any"