Add back key event handling 79/17879/2
authorHyungdeuk Kim <hd3.kim@samsung.com>
Wed, 26 Jun 2013 09:12:25 +0000 (18:12 +0900)
committerInkyun Kil <inkyun.kil@samsung.com>
Wed, 12 Mar 2014 05:13:49 +0000 (14:13 +0900)
Change-Id: Ifd2791755ddcc921c741ae54b494b54775d2b378

app-selector.c

index 7767b00..fdd4649 100755 (executable)
@@ -202,48 +202,48 @@ static Eina_Bool s_key_registered;
 static
 Eina_Bool __key_press_cb(void *data, int type, void *event)
 {
-        Evas_Event_Key_Down *ev = event;
-        struct appdata *ad = (struct appdata *)data;
-               char *val = NULL;
+       Evas_Event_Key_Down *ev = event;
+       struct appdata *ad = (struct appdata *)data;
+       char *val = NULL;
 
-        _D("__key_press_cb");
+       _D("__key_press_cb");
 
-        if (!s_key_registered) {
-                _E("Key is not registered");
-                return ECORE_CALLBACK_RENEW;
-        }
+       if (!s_key_registered) {
+               _E("Key is not registered");
+               return ECORE_CALLBACK_RENEW;
+       }
 
-        if (!ev) {
-                _E("Invalid event object");
-                return ECORE_CALLBACK_RENEW;
-        }
+       if (!ev) {
+               _E("Invalid event object");
+               return ECORE_CALLBACK_RENEW;
+       }
 
-        val = bundle_get_val(ad->kb, "__APP_SVC_CALLER_NOTI__");
-        if(val) {
-                       bundle_add(ad->kb, "__APP_SVC_START_INFO__", "c");
+       val = bundle_get_val(ad->kb, "__APP_SVC_CALLER_NOTI__");
+       if(val) {
+               bundle_add(ad->kb, "__APP_SVC_START_INFO__", "c");
                _D("before aul_launch_app");
-                       aul_launch_app(val, ad->kb);
-        }
+               aul_launch_app(val, ad->kb);
+       }
 
-               ecore_event_handler_del(ad->rotate);
-               ad->rotate = NULL;
-               elm_exit();
+       ecore_event_handler_del(ad->rotate);
+       ad->rotate = NULL;
+       elm_exit();
 
-        return ECORE_CALLBACK_RENEW;
+       return ECORE_CALLBACK_RENEW;
 }
 
 static void __register_key_handler(void *data)
 {
-        struct appdata *ad = (struct appdata *)data;
+       struct appdata *ad = (struct appdata *)data;
 
-        ad->key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP,
-                                                                                        __key_press_cb, ad);
-        if (!ad->key_up) {
-                _E("Failed to register a key down event handler");
-        }
+       ad->key_up = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
+                                                                                __key_press_cb, ad);
+       if (!ad->key_up) {
+               _E("Failed to register a key down event handler");
+       }
 
-        _D("Key handler is registered");
-        s_key_registered = EINA_TRUE;
+       _D("Key handler is registered");
+       s_key_registered = EINA_TRUE;
 }
 
 static void __unregister_key_handler(void *data)
@@ -259,26 +259,30 @@ static void __unregister_key_handler(void *data)
        s_key_registered = EINA_FALSE;
 }
 
-static void __grab_home_key(void *data)
+static void __grab_key(void *data)
 {
        struct appdata *ad = (struct appdata *)data;
 
-       _D("Grab home key.");
+       _D("Grab home / back key.");
 
        utilx_grab_key(ad->dpy, ad->xwin, KEY_HOME, SHARED_GRAB);
 
+       utilx_grab_key(ad->dpy, ad->xwin, KEY_BACK, TOP_POSITION_GRAB);
+
        __register_key_handler(ad);
 }
 
-static void __ungrab_home_key(void *data)
+static void __ungrab_key(void *data)
 {
        struct appdata *ad = (struct appdata *)data;
 
        __unregister_key_handler(ad);
 
-       _D("Ungrab home key.");
+       _D("Ungrab home / back key.");
 
        utilx_ungrab_key(ad->dpy, ad->xwin, KEY_HOME);
+
+       utilx_ungrab_key(ad->dpy, ad->xwin, KEY_BACK);
 }
 
 static int __app_create(void *data)
@@ -324,7 +328,7 @@ static int __app_create(void *data)
        if (r)
                return -1;
 
-       __grab_home_key(ad);
+       __grab_key(ad);
 
        return 0;
 }
@@ -362,7 +366,7 @@ static int __app_terminate(void *data)
                ad->rotate = NULL;
        }
 
-       __ungrab_home_key(ad);
+       __ungrab_key(ad);
 
        return 0;
 }