[gtk+] wayland: Implement gdk_window_[un]maximize
- From: Rob Bradford <rbradford src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] wayland: Implement gdk_window_[un]maximize
- Date: Mon, 18 Mar 2013 15:52:06 +0000 (UTC)
commit 1be7f3dee93b0951204d147e1ab5f4cafe91b60f
Author: Scott Moreau <oreaus gmail com>
Date: Sat Mar 16 17:34:57 2013 -0600
wayland: Implement gdk_window_[un]maximize
This allows the buttons in the decorations to maximise the window.
Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=695945
Signed-off-by: Rob Bradford <rob linux intel com>
gdk/wayland/gdkwindow-wayland.c | 43 +++++++++++++++++++++++++++++++++++++-
1 files changed, 41 insertions(+), 2 deletions(-)
---
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index fa01e90..1973f30 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -1295,15 +1295,54 @@ gdk_wayland_window_unstick (GdkWindow *window)
static void
gdk_wayland_window_maximize (GdkWindow *window)
{
- if (GDK_WINDOW_DESTROYED (window))
+ GdkWindowImplWayland *impl;
+
+ if (GDK_WINDOW_DESTROYED (window) ||
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
+
+ impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
+
+ if (GDK_WINDOW_IS_MAPPED (window))
+ {
+ if (impl->surface)
+ {
+ impl->saved_width = gdk_window_get_width (window);
+ impl->saved_height = gdk_window_get_height (window);
+
+ if (impl->shell_surface)
+ wl_shell_surface_set_maximized (impl->shell_surface, NULL);
+ }
+
+ gdk_synthesize_window_state (window,
+ 0,
+ GDK_WINDOW_STATE_MAXIMIZED);
+ }
}
static void
gdk_wayland_window_unmaximize (GdkWindow *window)
{
- if (GDK_WINDOW_DESTROYED (window))
+ GdkWindowImplWayland *impl;
+
+ if (GDK_WINDOW_DESTROYED (window) ||
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
return;
+
+ impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
+
+ if (GDK_WINDOW_IS_MAPPED (window))
+ {
+ if (impl->surface)
+ {
+ if (impl->shell_surface)
+ wl_shell_surface_set_toplevel (impl->shell_surface);
+ }
+
+ gdk_synthesize_window_state (window,
+ GDK_WINDOW_STATE_MAXIMIZED,
+ 0);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]