elm_win: bug fix - add keygrab unset code when wayland backend 81/201881/2
authorJongmin Lee <jm105.lee@samsung.com>
Wed, 20 Mar 2019 11:41:10 +0000 (20:41 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Thu, 21 Mar 2019 09:36:26 +0000 (09:36 +0000)
    add keygrab unset code and change keygrab set code to reduce function call.
    @tizen_feature

Author:     Ji-Youn Park <jy0703.park@samsung.com>

Commit-Id:  44014304034460784b62a40afa088f7fd8405050

Change-Id: If86adf73a4ee115a6c32463996066a4e9116c8de

src/lib/elementary/efl_ui_win.c

index 5a4bd52..3e15870 100644 (file)
@@ -10190,6 +10190,36 @@ elm_win_keygrab_set(Elm_Win *obj, const char *key,
          ret = ecore_x_window_keygrab_set(sd->x.xwin, key, 0, 0, 0, x_grab_mode);
      }
 #else
+
+// TIZEN_ONLY(20150722): Add ecore_wl2_window_keygrab_* APIs
+#ifdef HAVE_ELEMENTARY_WL2
+   Efl_Ui_Win_Data *sd = efl_data_scope_safe_get(obj, MY_CLASS);
+   _elm_win_wlwindow_get(sd);
+   if (sd->wl.win)
+     {
+        Ecore_Wl2_Window_Keygrab_Mode wl_grab_mode;
+        switch (grab_mode)
+          {
+           case ELM_WIN_KEYGRAB_SHARED:
+             wl_grab_mode = ECORE_WL2_WINDOW_KEYGRAB_SHARED;
+             break;
+           case ELM_WIN_KEYGRAB_TOPMOST:
+             wl_grab_mode = ECORE_WL2_WINDOW_KEYGRAB_TOPMOST;
+             break;
+           case ELM_WIN_KEYGRAB_EXCLUSIVE:
+             wl_grab_mode = ECORE_WL2_WINDOW_KEYGRAB_EXCLUSIVE;
+             break;
+           case ELM_WIN_KEYGRAB_OVERRIDE_EXCLUSIVE:
+             wl_grab_mode = ECORE_WL2_WINDOW_KEYGRAB_OVERRIDE_EXCLUSIVE;
+             break;
+           default:
+             return ret;
+          }
+        ret = ecore_wl2_window_keygrab_set(sd->wl.win, key, 0, 0, 0, wl_grab_mode);
+     }
+#endif
+//
+
    (void)obj;
    (void)key;
    (void)grab_mode;
@@ -10210,6 +10240,16 @@ elm_win_keygrab_unset(Elm_Win *obj, const char *key,
    if (sd->x.xwin)
      ret = ecore_x_window_keygrab_unset(sd->x.xwin, key, 0, 0);
 #else
+
+// TIZEN_ONLY(20150722): Add ecore_wl2_window_keygrab_* APIs
+#ifdef HAVE_ELEMENTARY_WL2
+   Efl_Ui_Win_Data *sd = efl_data_scope_safe_get(obj, MY_CLASS);
+   _elm_win_wlwindow_get(sd);
+   if (sd->wl.win)
+     ret = ecore_wl2_window_keygrab_unset(sd->wl.win, key, 0, 0);
+#endif
+//
+
    (void)obj;
    (void)key;
 #endif