summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-11-15 14:40:32 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-01-06 13:47:34 -0500
commit3348ea81f20e1d4d373a4630f0d79b3140169471 (patch)
tree9b9efc86ab1af413d9436edcb9cb982aa248c8b8
parent63e69131bde3f533db2844a7e6f3d1300cbdad64 (diff)
downloadgtk+-3348ea81f20e1d4d373a4630f0d79b3140169471.tar.gz
wayland: Move pending toplevel state to GdkWaylandToplevel
Another toplevel-only thing.
-rw-r--r--gdk/wayland/gdksurface-wayland.c71
1 files changed, 40 insertions, 31 deletions
diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c
index 0ad9d50240..93c8180315 100644
--- a/gdk/wayland/gdksurface-wayland.c
+++ b/gdk/wayland/gdksurface-wayland.c
@@ -93,6 +93,17 @@ struct _GdkWaylandToplevel
struct zxdg_exported_v2 *xdg_exported_v2;
struct {
+ int width;
+ int height;
+ GdkToplevelState state;
+ gboolean is_resizing;
+
+ int bounds_width;
+ int bounds_height;
+ gboolean has_bounds;
+ } pending;
+
+ struct {
GdkWaylandToplevelExported callback;
gpointer user_data;
GDestroyNotify destroy_func;
@@ -1393,16 +1404,16 @@ gdk_wayland_surface_configure_toplevel (GdkWaylandToplevel *wayland_toplevel)
gboolean was_fixed_size;
gboolean saved_size;
- new_state = wayland_surface->pending.toplevel.state;
- wayland_surface->pending.toplevel.state = 0;
+ new_state = wayland_toplevel->pending.state;
+ wayland_toplevel->pending.state = 0;
- is_resizing = wayland_surface->pending.toplevel.is_resizing;
- wayland_surface->pending.toplevel.is_resizing = FALSE;
+ is_resizing = wayland_toplevel->pending.is_resizing;
+ wayland_toplevel->pending.is_resizing = FALSE;
- if (wayland_surface->pending.toplevel.has_bounds)
+ if (wayland_toplevel->pending.has_bounds)
{
- wayland_toplevel->bounds_width = wayland_surface->pending.toplevel.bounds_width;
- wayland_toplevel->bounds_height = wayland_surface->pending.toplevel.bounds_height;
+ wayland_toplevel->bounds_width = wayland_toplevel->pending.bounds_width;
+ wayland_toplevel->bounds_height = wayland_toplevel->pending.bounds_height;
wayland_toplevel->has_bounds = TRUE;
}
@@ -1417,8 +1428,8 @@ gdk_wayland_surface_configure_toplevel (GdkWaylandToplevel *wayland_toplevel)
GDK_TOPLEVEL_STATE_FULLSCREEN |
GDK_TOPLEVEL_STATE_TILED);
- width = wayland_surface->pending.toplevel.width;
- height = wayland_surface->pending.toplevel.height;
+ width = wayland_toplevel->pending.width;
+ height = wayland_toplevel->pending.height;
saved_size = (width == 0 && height == 0);
/* According to xdg_shell, an xdg_surface.configure with size 0x0
@@ -1621,11 +1632,11 @@ gdk_wayland_surface_handle_configure_toplevel (GdkSurface *surface,
int32_t height,
GdkToplevelState state)
{
- GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
+ GdkWaylandToplevel *toplevel = GDK_WAYLAND_TOPLEVEL (surface);
- impl->pending.toplevel.state |= state;
- impl->pending.toplevel.width = width;
- impl->pending.toplevel.height = height;
+ toplevel->pending.state |= state;
+ toplevel->pending.width = width;
+ toplevel->pending.height = height;
}
static void
@@ -1711,11 +1722,11 @@ xdg_toplevel_configure (void *data,
struct wl_array *states)
{
GdkSurface *surface = GDK_SURFACE (data);
- GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
+ GdkWaylandToplevel *toplevel = GDK_WAYLAND_TOPLEVEL (surface);
uint32_t *p;
GdkToplevelState pending_state = 0;
- impl->pending.toplevel.is_resizing = FALSE;
+ toplevel->pending.is_resizing = FALSE;
wl_array_for_each (p, states)
{
@@ -1733,7 +1744,7 @@ xdg_toplevel_configure (void *data,
pending_state |= GDK_TOPLEVEL_STATE_FOCUSED;
break;
case XDG_TOPLEVEL_STATE_RESIZING:
- impl->pending.toplevel.is_resizing = TRUE;
+ toplevel->pending.is_resizing = TRUE;
break;
case XDG_TOPLEVEL_STATE_TILED_TOP:
pending_state |= (GDK_TOPLEVEL_STATE_TILED |
@@ -1757,8 +1768,7 @@ xdg_toplevel_configure (void *data,
}
}
- gdk_wayland_surface_handle_configure_toplevel (surface, width, height,
- pending_state);
+ gdk_wayland_surface_handle_configure_toplevel (surface, width, height, pending_state);
}
static void
@@ -1777,11 +1787,11 @@ xdg_toplevel_configure_bounds (void *data,
int32_t height)
{
GdkSurface *surface = GDK_SURFACE (data);
- GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
+ GdkWaylandToplevel *toplevel = GDK_WAYLAND_TOPLEVEL (surface);
- impl->pending.toplevel.bounds_width = width;
- impl->pending.toplevel.bounds_height = height;
- impl->pending.toplevel.has_bounds = TRUE;
+ toplevel->pending.bounds_width = width;
+ toplevel->pending.bounds_height = height;
+ toplevel->pending.has_bounds = TRUE;
}
static const struct xdg_toplevel_listener xdg_toplevel_listener = {
@@ -1810,11 +1820,11 @@ zxdg_toplevel_v6_configure (void *data,
struct wl_array *states)
{
GdkSurface *surface = GDK_SURFACE (data);
- GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
+ GdkWaylandToplevel *toplevel = GDK_WAYLAND_TOPLEVEL (surface);
uint32_t *p;
GdkToplevelState pending_state = 0;
- impl->pending.toplevel.is_resizing = FALSE;
+ toplevel->pending.is_resizing = FALSE;
wl_array_for_each (p, states)
{
@@ -1832,7 +1842,7 @@ zxdg_toplevel_v6_configure (void *data,
pending_state |= GDK_TOPLEVEL_STATE_FOCUSED;
break;
case ZXDG_TOPLEVEL_V6_STATE_RESIZING:
- impl->pending.toplevel.is_resizing = TRUE;
+ toplevel->pending.is_resizing = TRUE;
break;
default:
/* Unknown state */
@@ -1840,8 +1850,7 @@ zxdg_toplevel_v6_configure (void *data,
}
}
- gdk_wayland_surface_handle_configure_toplevel (surface, width, height,
- pending_state);
+ gdk_wayland_surface_handle_configure_toplevel (surface, width, height, pending_state);
}
static void
@@ -3515,7 +3524,7 @@ gtk_surface_configure (void *data,
struct wl_array *states)
{
GdkSurface *surface = GDK_SURFACE (data);
- GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
+ GdkWaylandToplevel *toplevel = GDK_WAYLAND_TOPLEVEL (surface);
GdkToplevelState new_state = 0;
uint32_t *p;
@@ -3548,7 +3557,7 @@ gtk_surface_configure (void *data,
}
}
- impl->pending.toplevel.state |= new_state;
+ toplevel->pending.state |= new_state;
}
static void
@@ -3557,7 +3566,7 @@ gtk_surface_configure_edges (void *data,
struct wl_array *edge_constraints)
{
GdkSurface *surface = GDK_SURFACE (data);
- GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
+ GdkWaylandToplevel *toplevel = GDK_WAYLAND_TOPLEVEL (surface);
GdkToplevelState new_state = 0;
uint32_t *p;
@@ -3585,7 +3594,7 @@ gtk_surface_configure_edges (void *data,
}
}
- impl->pending.toplevel.state |= new_state;
+ toplevel->pending.state |= new_state;
}
static const struct gtk_surface1_listener gtk_surface_listener = {