[gtk+] wayland: Implement gdk_window_[un]maximize



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]