[mutter] MetaWaylandPointer: Initialize default grab on init



commit 98f0578f9db0e0bf6633c7f69639cfe4f74605b7
Author: Jonas Ådahl <jadahl gmail com>
Date:   Mon Sep 12 23:22:23 2016 +0800

    MetaWaylandPointer: Initialize default grab on init
    
    Instead of initializing the default grab when the device class is
    enabled, initialize it on object initialization. This way other device
    classes can still grab the pointer, as if there was one. This may be
    useful for example if a touch grab is active and a mouse is connected.
    
    This also makes it possible for popup grabs, which currently use a
    pointer grab for controlling, to be triggered by touch devices, while
    still holding an active pointer grab.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=771305

 src/wayland/meta-wayland-pointer.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)
---
diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
index d2cb01d..107b77c 100644
--- a/src/wayland/meta-wayland-pointer.c
+++ b/src/wayland/meta-wayland-pointer.c
@@ -469,10 +469,6 @@ meta_wayland_pointer_enable (MetaWaylandPointer *pointer)
 
   pointer->cursor_surface = NULL;
 
-  pointer->default_grab.interface = &default_pointer_grab_interface;
-  pointer->default_grab.pointer = pointer;
-  pointer->grab = &pointer->default_grab;
-
   manager = clutter_device_manager_get_default ();
   pointer->device = clutter_device_manager_get_core_device (manager, CLUTTER_POINTER_DEVICE);
 
@@ -497,7 +493,7 @@ meta_wayland_pointer_disable (MetaWaylandPointer *pointer)
                                    pointer->cursor_surface_destroy_id);
     }
 
-  meta_wayland_pointer_set_focus (pointer, NULL);
+  meta_wayland_pointer_end_grab (pointer);
 
   g_clear_pointer (&pointer->pointer_clients, g_hash_table_unref);
   pointer->cursor_surface = NULL;
@@ -1216,6 +1212,9 @@ meta_wayland_pointer_get_seat (MetaWaylandPointer *pointer)
 static void
 meta_wayland_pointer_init (MetaWaylandPointer *pointer)
 {
+  pointer->default_grab.interface = &default_pointer_grab_interface;
+  pointer->default_grab.pointer = pointer;
+  pointer->grab = &pointer->default_grab;
 }
 
 static void


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