gdk: Remove remnants of client-side windows
Now that all surfaces are native, we don't need to separately keep track of grab surfaces and their native ancestor anymore.
This commit is contained in:
@@ -215,7 +215,7 @@ _gdk_broadway_surface_grab_check_destroy (GdkSurface *surface)
|
||||
/* Make sure there is no lasting grab in this native surface */
|
||||
grab = _gdk_display_get_last_device_grab (display, d->data);
|
||||
|
||||
if (grab && grab->native_surface == surface)
|
||||
if (grab && grab->surface == surface)
|
||||
{
|
||||
grab->serial_end = grab->serial_start;
|
||||
grab->implicit_ungrab = TRUE;
|
||||
|
||||
@@ -1237,7 +1237,7 @@ get_native_grab_event_mask (GdkEventMask grab_mask)
|
||||
|
||||
GdkGrabStatus
|
||||
gdk_device_grab (GdkDevice *device,
|
||||
GdkSurface *surface,
|
||||
GdkSurface *surface,
|
||||
GdkGrabOwnership grab_ownership,
|
||||
gboolean owner_events,
|
||||
GdkEventMask event_mask,
|
||||
@@ -1245,19 +1245,16 @@ gdk_device_grab (GdkDevice *device,
|
||||
guint32 time_)
|
||||
{
|
||||
GdkGrabStatus res;
|
||||
GdkSurface *native;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_GRAB_FAILED);
|
||||
g_return_val_if_fail (GDK_IS_SURFACE (surface), GDK_GRAB_FAILED);
|
||||
g_return_val_if_fail (gdk_surface_get_display (surface) == gdk_device_get_display (device), GDK_GRAB_FAILED);
|
||||
|
||||
native = surface;
|
||||
|
||||
if (GDK_SURFACE_DESTROYED (native))
|
||||
if (GDK_SURFACE_DESTROYED (surface))
|
||||
return GDK_GRAB_NOT_VIEWABLE;
|
||||
|
||||
res = GDK_DEVICE_GET_CLASS (device)->grab (device,
|
||||
native,
|
||||
surface,
|
||||
owner_events,
|
||||
get_native_grab_event_mask (event_mask),
|
||||
NULL,
|
||||
@@ -1275,7 +1272,6 @@ gdk_device_grab (GdkDevice *device,
|
||||
_gdk_display_add_device_grab (display,
|
||||
device,
|
||||
surface,
|
||||
native,
|
||||
grab_ownership,
|
||||
owner_events,
|
||||
event_mask,
|
||||
|
||||
@@ -336,7 +336,6 @@ static void
|
||||
free_device_grab (GdkDeviceGrabInfo *info)
|
||||
{
|
||||
g_object_unref (info->surface);
|
||||
g_object_unref (info->native_surface);
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
@@ -558,7 +557,6 @@ GdkDeviceGrabInfo *
|
||||
_gdk_display_add_device_grab (GdkDisplay *display,
|
||||
GdkDevice *device,
|
||||
GdkSurface *surface,
|
||||
GdkSurface *native_surface,
|
||||
GdkGrabOwnership grab_ownership,
|
||||
gboolean owner_events,
|
||||
GdkEventMask event_mask,
|
||||
@@ -572,7 +570,6 @@ _gdk_display_add_device_grab (GdkDisplay *display,
|
||||
info = g_new0 (GdkDeviceGrabInfo, 1);
|
||||
|
||||
info->surface = g_object_ref (surface);
|
||||
info->native_surface = g_object_ref (native_surface);
|
||||
info->serial_start = serial_start;
|
||||
info->serial_end = G_MAXULONG;
|
||||
info->owner_events = owner_events;
|
||||
|
||||
@@ -41,7 +41,6 @@ typedef struct _GdkDisplayClass GdkDisplayClass;
|
||||
typedef struct
|
||||
{
|
||||
GdkSurface *surface;
|
||||
GdkSurface *native_surface;
|
||||
gulong serial_start;
|
||||
gulong serial_end; /* exclusive, i.e. not active on serial_end */
|
||||
guint event_mask;
|
||||
@@ -200,7 +199,6 @@ GdkDeviceGrabInfo * _gdk_display_get_last_device_grab (GdkDisplay *display,
|
||||
GdkDeviceGrabInfo * _gdk_display_add_device_grab (GdkDisplay *display,
|
||||
GdkDevice *device,
|
||||
GdkSurface *surface,
|
||||
GdkSurface *native_surface,
|
||||
GdkGrabOwnership grab_ownership,
|
||||
gboolean owner_events,
|
||||
GdkEventMask event_mask,
|
||||
|
||||
@@ -728,20 +728,20 @@ device_maybe_emit_grab_crossing (GdkDevice *device,
|
||||
GdkSurface *window,
|
||||
guint32 time)
|
||||
{
|
||||
GdkSurface *native = gdk_wayland_device_get_focus (device);
|
||||
GdkSurface *surface = gdk_wayland_device_get_focus (device);
|
||||
GdkSurface *focus = window;
|
||||
|
||||
if (focus != native)
|
||||
if (focus != surface)
|
||||
device_emit_grab_crossing (device, focus, window, GDK_CROSSING_GRAB, time);
|
||||
}
|
||||
|
||||
static GdkSurface*
|
||||
device_maybe_emit_ungrab_crossing (GdkDevice *device,
|
||||
guint32 time)
|
||||
device_maybe_emit_ungrab_crossing (GdkDevice *device,
|
||||
guint32 time_)
|
||||
{
|
||||
GdkDeviceGrabInfo *grab;
|
||||
GdkSurface *focus = NULL;
|
||||
GdkSurface *native = NULL;
|
||||
GdkSurface *surface = NULL;
|
||||
GdkSurface *prev_focus = NULL;
|
||||
|
||||
focus = gdk_wayland_device_get_focus (device);
|
||||
@@ -751,21 +751,21 @@ device_maybe_emit_ungrab_crossing (GdkDevice *device,
|
||||
{
|
||||
grab->serial_end = grab->serial_start;
|
||||
prev_focus = grab->surface;
|
||||
native = grab->native_surface;
|
||||
surface = grab->surface;
|
||||
}
|
||||
|
||||
if (focus != native)
|
||||
device_emit_grab_crossing (device, prev_focus, focus, GDK_CROSSING_UNGRAB, time);
|
||||
if (focus != surface)
|
||||
device_emit_grab_crossing (device, prev_focus, focus, GDK_CROSSING_UNGRAB, time_);
|
||||
|
||||
return prev_focus;
|
||||
}
|
||||
|
||||
static GdkGrabStatus
|
||||
gdk_wayland_device_grab (GdkDevice *device,
|
||||
GdkSurface *surface,
|
||||
GdkSurface *surface,
|
||||
gboolean owner_events,
|
||||
GdkEventMask event_mask,
|
||||
GdkSurface *confine_to,
|
||||
GdkSurface *confine_to,
|
||||
GdkCursor *cursor,
|
||||
guint32 time_)
|
||||
{
|
||||
@@ -787,7 +787,7 @@ gdk_wayland_device_grab (GdkDevice *device,
|
||||
{
|
||||
/* Device is a keyboard */
|
||||
gdk_wayland_surface_inhibit_shortcuts (surface,
|
||||
gdk_device_get_seat (device));
|
||||
gdk_device_get_seat (device));
|
||||
return GDK_GRAB_SUCCESS;
|
||||
}
|
||||
else
|
||||
@@ -4614,7 +4614,7 @@ gdk_wayland_seat_set_grab_surface (GdkWaylandSeat *seat,
|
||||
|
||||
static GdkGrabStatus
|
||||
gdk_wayland_seat_grab (GdkSeat *seat,
|
||||
GdkSurface *surface,
|
||||
GdkSurface *surface,
|
||||
GdkSeatCapabilities capabilities,
|
||||
gboolean owner_events,
|
||||
GdkCursor *cursor,
|
||||
@@ -4625,15 +4625,12 @@ gdk_wayland_seat_grab (GdkSeat *seat,
|
||||
GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat);
|
||||
guint32 evtime = event ? gdk_event_get_time (event) : GDK_CURRENT_TIME;
|
||||
GdkDisplay *display = gdk_seat_get_display (seat);
|
||||
GdkSurface *native;
|
||||
GList *l;
|
||||
|
||||
native = surface;
|
||||
|
||||
if (native == NULL || GDK_SURFACE_DESTROYED (native))
|
||||
if (surface == NULL || GDK_SURFACE_DESTROYED (surface))
|
||||
return GDK_GRAB_NOT_VIEWABLE;
|
||||
|
||||
gdk_wayland_seat_set_grab_surface (wayland_seat, native);
|
||||
gdk_wayland_seat_set_grab_surface (wayland_seat, surface);
|
||||
wayland_seat->grab_time = evtime;
|
||||
|
||||
if (prepare_func)
|
||||
@@ -4651,12 +4648,11 @@ gdk_wayland_seat_grab (GdkSeat *seat,
|
||||
capabilities & GDK_SEAT_CAPABILITY_POINTER)
|
||||
{
|
||||
device_maybe_emit_grab_crossing (wayland_seat->master_pointer,
|
||||
native, evtime);
|
||||
surface, evtime);
|
||||
|
||||
_gdk_display_add_device_grab (display,
|
||||
wayland_seat->master_pointer,
|
||||
surface,
|
||||
native,
|
||||
GDK_OWNERSHIP_NONE,
|
||||
owner_events,
|
||||
GDK_ALL_EVENTS_MASK,
|
||||
@@ -4673,12 +4669,11 @@ gdk_wayland_seat_grab (GdkSeat *seat,
|
||||
capabilities & GDK_SEAT_CAPABILITY_TOUCH)
|
||||
{
|
||||
device_maybe_emit_grab_crossing (wayland_seat->touch_master,
|
||||
native, evtime);
|
||||
surface, evtime);
|
||||
|
||||
_gdk_display_add_device_grab (display,
|
||||
wayland_seat->touch_master,
|
||||
surface,
|
||||
native,
|
||||
GDK_OWNERSHIP_NONE,
|
||||
owner_events,
|
||||
GDK_ALL_EVENTS_MASK,
|
||||
@@ -4691,12 +4686,11 @@ gdk_wayland_seat_grab (GdkSeat *seat,
|
||||
capabilities & GDK_SEAT_CAPABILITY_KEYBOARD)
|
||||
{
|
||||
device_maybe_emit_grab_crossing (wayland_seat->master_keyboard,
|
||||
native, evtime);
|
||||
surface, evtime);
|
||||
|
||||
_gdk_display_add_device_grab (display,
|
||||
wayland_seat->master_keyboard,
|
||||
surface,
|
||||
native,
|
||||
GDK_OWNERSHIP_NONE,
|
||||
owner_events,
|
||||
GDK_ALL_EVENTS_MASK,
|
||||
@@ -4716,12 +4710,12 @@ gdk_wayland_seat_grab (GdkSeat *seat,
|
||||
{
|
||||
GdkWaylandTabletData *tablet = l->data;
|
||||
|
||||
device_maybe_emit_grab_crossing (tablet->master, native, evtime);
|
||||
device_maybe_emit_grab_crossing (tablet->master,
|
||||
surface, evtime);
|
||||
|
||||
_gdk_display_add_device_grab (display,
|
||||
tablet->master,
|
||||
surface,
|
||||
native,
|
||||
GDK_OWNERSHIP_NONE,
|
||||
owner_events,
|
||||
GDK_ALL_EVENTS_MASK,
|
||||
|
||||
@@ -177,7 +177,7 @@ _gdk_x11_surface_grab_check_destroy (GdkSurface *surface)
|
||||
/* Make sure there is no lasting grab in this native surface */
|
||||
grab = _gdk_display_get_last_device_grab (display, d->data);
|
||||
|
||||
if (grab && grab->native_surface == surface)
|
||||
if (grab && grab->surface == surface)
|
||||
{
|
||||
/* We don't know the actual serial to end, but it
|
||||
doesn't really matter as this only happens
|
||||
|
||||
Reference in New Issue
Block a user