[mutter] wayland: Simplify popup grabbing API



commit e68b5f6655748764aa2f635f889953799009b1cc
Author: Jonas Ådahl <jadahl gmail com>
Date:   Wed Jan 20 12:40:14 2016 +0800

    wayland: Simplify popup grabbing API
    
    meta_wayland_popup_grab_create() creates and begins the grab and
    meta_wayland_popup_grab_destroy() both ends and destroys the grab.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=763431

 src/wayland/meta-wayland-pointer.c |    8 +-------
 src/wayland/meta-wayland-popup.c   |   15 +++++++++++++--
 src/wayland/meta-wayland-popup.h   |    7 +------
 3 files changed, 15 insertions(+), 15 deletions(-)
---
diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
index b4a36b4..6ae5754 100644
--- a/src/wayland/meta-wayland-pointer.c
+++ b/src/wayland/meta-wayland-pointer.c
@@ -885,7 +885,6 @@ meta_wayland_pointer_end_popup_grab (MetaWaylandPointer *pointer)
 {
   MetaWaylandPopupGrab *popup_grab = (MetaWaylandPopupGrab*)pointer->grab;
 
-  meta_wayland_popup_grab_end (popup_grab);
   meta_wayland_popup_grab_destroy (popup_grab);
 }
 
@@ -900,12 +899,7 @@ meta_wayland_pointer_start_popup_grab (MetaWaylandPointer *pointer,
     return NULL;
 
   if (pointer->grab == &pointer->default_grab)
-    {
-      struct wl_client *client = wl_resource_get_client (surface->resource);
-
-      grab = meta_wayland_popup_grab_create (pointer, client);
-      meta_wayland_popup_grab_begin (grab, surface);
-    }
+    grab = meta_wayland_popup_grab_create (pointer, surface);
   else
     grab = (MetaWaylandPopupGrab*)pointer->grab;
 
diff --git a/src/wayland/meta-wayland-popup.c b/src/wayland/meta-wayland-popup.c
index f3d47ae..174a6d8 100644
--- a/src/wayland/meta-wayland-popup.c
+++ b/src/wayland/meta-wayland-popup.c
@@ -67,6 +67,13 @@ struct _MetaWaylandPopup
 };
 
 static void
+meta_wayland_popup_grab_begin (MetaWaylandPopupGrab *grab,
+                               MetaWaylandSurface   *surface);
+
+static void
+meta_wayland_popup_grab_end (MetaWaylandPopupGrab *grab);
+
+static void
 popup_grab_focus (MetaWaylandPointerGrab *grab,
                  MetaWaylandSurface     *surface)
 {
@@ -109,8 +116,9 @@ static MetaWaylandPointerGrabInterface popup_grab_interface = {
 
 MetaWaylandPopupGrab *
 meta_wayland_popup_grab_create (MetaWaylandPointer *pointer,
-                                struct wl_client   *client)
+                                MetaWaylandSurface *surface)
 {
+  struct wl_client *client = wl_resource_get_client (surface->resource);
   MetaWaylandPopupGrab *grab;
 
   grab = g_slice_new0 (MetaWaylandPopupGrab);
@@ -119,16 +127,19 @@ meta_wayland_popup_grab_create (MetaWaylandPointer *pointer,
   grab->grab_client = client;
   wl_list_init (&grab->all_popups);
 
+  meta_wayland_popup_grab_begin (grab, surface);
+
   return grab;
 }
 
 void
 meta_wayland_popup_grab_destroy (MetaWaylandPopupGrab *grab)
 {
+  meta_wayland_popup_grab_end (grab);
   g_slice_free (MetaWaylandPopupGrab, grab);
 }
 
-void
+static void
 meta_wayland_popup_grab_begin (MetaWaylandPopupGrab *grab,
                                MetaWaylandSurface   *surface)
 {
diff --git a/src/wayland/meta-wayland-popup.h b/src/wayland/meta-wayland-popup.h
index 0bee220..7e4a3a3 100644
--- a/src/wayland/meta-wayland-popup.h
+++ b/src/wayland/meta-wayland-popup.h
@@ -28,15 +28,10 @@
 #include "meta-wayland-pointer.h"
 
 MetaWaylandPopupGrab *meta_wayland_popup_grab_create (MetaWaylandPointer *pointer,
-                                                      struct wl_client   *client);
+                                                      MetaWaylandSurface *surface);
 
 void meta_wayland_popup_grab_destroy (MetaWaylandPopupGrab *grab);
 
-void meta_wayland_popup_grab_begin (MetaWaylandPopupGrab *grab,
-                                    MetaWaylandSurface   *surface);
-
-void meta_wayland_popup_grab_end (MetaWaylandPopupGrab *grab);
-
 MetaWaylandSurface *meta_wayland_popup_grab_get_top_popup (MetaWaylandPopupGrab *grab);
 
 gboolean meta_wayland_pointer_grab_is_popup_grab (MetaWaylandPointerGrab *grab);


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