[mutter] keybindings: Fix keyboard move/resize on Wayland



commit 5d6af70bc92f6acb913e22328b8581151000f526
Author: Olivier Fourdan <ofourdan redhat com>
Date:   Mon Apr 18 15:29:42 2016 +0200

    keybindings: Fix keyboard move/resize on Wayland
    
    Rework the code to keep the grab/ungrab logic when running as a Wayland
    compositor.
    
    Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=758076

 src/core/keybindings.c |   50 +++++++++++++----------------------------------
 1 files changed, 14 insertions(+), 36 deletions(-)
---
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index ddbab70..a5cb0d7 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -897,6 +897,9 @@ meta_change_button_grab (MetaKeyBindingManager *keys,
                          int                     button,
                          int                     modmask)
 {
+  if (meta_is_wayland_compositor ())
+    return;
+
   MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
   Display *xdisplay = meta_backend_x11_get_xdisplay (backend);
 
@@ -969,9 +972,6 @@ meta_display_grab_window_buttons (MetaDisplay *display,
 {
   MetaKeyBindingManager *keys = &display->key_binding_manager;
 
-  if (meta_is_wayland_compositor ())
-    return;
-
   /* Grab Alt + button1 for moving window.
    * Grab Alt + button2 for resizing window.
    * Grab Alt + button3 for popping up window menu.
@@ -1008,9 +1008,6 @@ meta_display_ungrab_window_buttons (MetaDisplay *display,
 {
   MetaKeyBindingManager *keys = &display->key_binding_manager;
 
-  if (meta_is_wayland_compositor ())
-    return;
-
   if (keys->window_grab_modifiers == 0)
     return;
 
@@ -1037,9 +1034,6 @@ meta_display_grab_focus_window_button (MetaDisplay *display,
 {
   MetaKeyBindingManager *keys = &display->key_binding_manager;
 
-  if (meta_is_wayland_compositor ())
-    return;
-
   /* Grab button 1 for activating unfocused windows */
   meta_verbose ("Grabbing unfocused window buttons for %s\n", window->desc);
 
@@ -1079,9 +1073,6 @@ meta_display_ungrab_focus_window_button (MetaDisplay *display,
 {
   MetaKeyBindingManager *keys = &display->key_binding_manager;
 
-  if (meta_is_wayland_compositor ())
-    return;
-
   meta_verbose ("Ungrabbing unfocused window buttons for %s\n", window->desc);
 
   if (!window->have_focus_click_grab)
@@ -1161,6 +1152,9 @@ meta_change_keygrab (MetaKeyBindingManager *keys,
   XISetMask (mask.mask, XI_KeyPress);
   XISetMask (mask.mask, XI_KeyRelease);
 
+  if (meta_is_wayland_compositor ())
+    return;
+
   MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
   Display *xdisplay = meta_backend_x11_get_xdisplay (backend);
 
@@ -1275,11 +1269,6 @@ meta_screen_change_keygrabs (MetaScreen *screen,
 void
 meta_screen_grab_keys (MetaScreen *screen)
 {
-  MetaBackend *backend = meta_get_backend ();
-
-  if (!META_IS_BACKEND_X11 (backend))
-    return;
-
   if (screen->keys_grabbed)
     return;
 
@@ -1313,10 +1302,6 @@ meta_window_grab_keys (MetaWindow  *window)
   MetaDisplay *display = window->display;
   MetaKeyBindingManager *keys = &display->key_binding_manager;
 
-  /* Under Wayland, we don't need to grab at all. */
-  if (meta_is_wayland_compositor ())
-    return;
-
   if (window->all_keys_grabbed)
     return;
 
@@ -1384,7 +1369,6 @@ guint
 meta_display_grab_accelerator (MetaDisplay *display,
                                const char  *accelerator)
 {
-  MetaBackend *backend = meta_get_backend ();
   MetaKeyBindingManager *keys = &display->key_binding_manager;
   MetaKeyBinding *binding;
   MetaKeyGrab *grab;
@@ -1408,8 +1392,7 @@ meta_display_grab_accelerator (MetaDisplay *display,
   if (get_keybinding (keys, &resolved_combo))
     return META_KEYBINDING_ACTION_NONE;
 
-  if (META_IS_BACKEND_X11 (backend))
-    meta_change_keygrab (keys, display->screen->xroot, TRUE, &resolved_combo);
+  meta_change_keygrab (keys, display->screen->xroot, TRUE, &resolved_combo);
 
   grab = g_new0 (MetaKeyGrab, 1);
   grab->action = next_dynamic_keybinding_action ();
@@ -1434,7 +1417,6 @@ gboolean
 meta_display_ungrab_accelerator (MetaDisplay *display,
                                  guint        action)
 {
-  MetaBackend *backend = meta_get_backend ();
   MetaKeyBindingManager *keys = &display->key_binding_manager;
   MetaKeyBinding *binding;
   MetaKeyGrab *grab;
@@ -1454,8 +1436,7 @@ meta_display_ungrab_accelerator (MetaDisplay *display,
     {
       guint32 index_key;
 
-      if (META_IS_BACKEND_X11 (backend))
-        meta_change_keygrab (keys, display->screen->xroot, FALSE, &binding->resolved_combo);
+      meta_change_keygrab (keys, display->screen->xroot, FALSE, &binding->resolved_combo);
 
       index_key = key_combo_key (&binding->resolved_combo);
       g_hash_table_remove (keys->key_bindings_index, GINT_TO_POINTER (index_key));
@@ -1482,6 +1463,9 @@ grab_keyboard (Window  xwindow,
   XISetMask (mask.mask, XI_KeyPress);
   XISetMask (mask.mask, XI_KeyRelease);
 
+  if (meta_is_wayland_compositor ())
+    return TRUE;
+
   /* Grab the keyboard, so we get key releases and all key
    * presses
    */
@@ -1513,6 +1497,9 @@ grab_keyboard (Window  xwindow,
 static void
 ungrab_keyboard (guint32 timestamp)
 {
+  if (meta_is_wayland_compositor ())
+    return;
+
   MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
   Display *xdisplay = meta_backend_x11_get_xdisplay (backend);
 
@@ -1525,10 +1512,6 @@ meta_window_grab_all_keys (MetaWindow  *window,
 {
   Window grabwindow;
   gboolean retval;
-  MetaBackend *backend = meta_get_backend ();
-
-  if (!META_IS_BACKEND_X11 (backend))
-    return TRUE;
 
   if (window->all_keys_grabbed)
     return FALSE;
@@ -1590,11 +1573,6 @@ meta_display_freeze_keyboard (MetaDisplay *display, guint32 timestamp)
 void
 meta_display_ungrab_keyboard (MetaDisplay *display, guint32 timestamp)
 {
-  MetaBackend *backend = meta_get_backend ();
-
-  if (!META_IS_BACKEND_X11 (backend))
-    return;
-
   ungrab_keyboard (timestamp);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]