From e68b5f6655748764aa2f635f889953799009b1cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 20 Jan 2016 12:40:14 +0800 Subject: [PATCH] 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 b4a36b4f4..6ae5754f3 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 f3d47aef7..174a6d86a 100644 --- a/src/wayland/meta-wayland-popup.c +++ b/src/wayland/meta-wayland-popup.c @@ -66,6 +66,13 @@ struct _MetaWaylandPopup struct wl_list link; }; +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 0bee220d4..7e4a3a34a 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);