gtk+ r19567 - in trunk: . gdk/quartz



Author: rhult
Date: Thu Feb 14 21:41:59 2008
New Revision: 19567
URL: http://svn.gnome.org/viewvc/gtk+?rev=19567&view=rev

Log:
2008-02-14  Richard Hult  <richard imendio com>

	* gdk/quartz/gdkwindow-quartz.c: (get_fullscreen_geometry),
	(gdk_window_hide), (gdk_window_fullscreen),
	(gdk_window_unfullscreen): Make sure we leave fullscreen mode if
	the window is hidden.


Modified:
   trunk/ChangeLog
   trunk/gdk/quartz/gdkwindow-quartz.c

Modified: trunk/gdk/quartz/gdkwindow-quartz.c
==============================================================================
--- trunk/gdk/quartz/gdkwindow-quartz.c	(original)
+++ trunk/gdk/quartz/gdkwindow-quartz.c	Thu Feb 14 21:41:59 2008
@@ -32,8 +32,20 @@
 
 static GSList *main_window_stack;
 
+#define FULLSCREEN_DATA "fullscreen-data"
+
+typedef struct
+{
+  gint            x, y;
+  gint            width, height;
+  GdkWMDecoration decor;
+} FullscreenSavedGeometry;
+
+
 static void update_toplevel_order (void);
-static void clear_toplevel_order (void);
+static void clear_toplevel_order  (void);
+
+static FullscreenSavedGeometry *get_fullscreen_geometry (GdkWindow *window);
 
 #define WINDOW_IS_TOPLEVEL(window)		   \
   (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && \
@@ -1079,6 +1091,10 @@
 
   g_return_if_fail (GDK_IS_WINDOW (window));
 
+  /* Make sure we're not stuck in fullscreen mode. */
+  if (get_fullscreen_geometry (window))
+    ShowMenuBar ();
+
   if (GDK_WINDOW_DESTROYED (window))
     return;
 
@@ -2711,14 +2727,11 @@
     }
 }
 
-#define FULLSCREEN_DATA "fullscreen-data"
-
-typedef struct
+static FullscreenSavedGeometry *
+get_fullscreen_geometry (GdkWindow *window)
 {
-  gint            x, y;
-  gint            width, height;
-  GdkWMDecoration decor;
-} FullscreenSavedGeometry;
+  return g_object_get_data (G_OBJECT (window), FULLSCREEN_DATA);
+}
 
 void
 gdk_window_fullscreen (GdkWindow *window)
@@ -2731,28 +2744,32 @@
   g_return_if_fail (GDK_IS_WINDOW (window));
   g_return_if_fail (WINDOW_IS_TOPLEVEL (window));
 
-  geometry = g_new (FullscreenSavedGeometry, 1);
+  geometry = get_fullscreen_geometry (window);
+  if (!geometry)
+    {
+      geometry = g_new (FullscreenSavedGeometry, 1);
+
+      geometry->x = private->x;
+      geometry->y = private->y;
+      geometry->width = impl->width;
+      geometry->height = impl->height;
 
-  geometry->x = private->x;
-  geometry->y = private->y;
-  geometry->width = impl->width;
-  geometry->height = impl->height;
-  
-  if (!gdk_window_get_decorations (window, &geometry->decor))
-    geometry->decor = GDK_DECOR_ALL;
-
-  g_object_set_data_full (G_OBJECT (window),
-                          FULLSCREEN_DATA, geometry, 
-                          g_free);
+      if (!gdk_window_get_decorations (window, &geometry->decor))
+        geometry->decor = GDK_DECOR_ALL;
 
-  HideMenuBar ();
+      g_object_set_data_full (G_OBJECT (window),
+                              FULLSCREEN_DATA, geometry, 
+                              g_free);
 
-  gdk_window_set_decorations (window, 0);
+      gdk_window_set_decorations (window, 0);
 
-  frame = [[NSScreen mainScreen] frame];
-  move_resize_window_internal (window,
-                               0, 0, 
-                               frame.size.width, frame.size.height);
+      frame = [[NSScreen mainScreen] frame];
+      move_resize_window_internal (window,
+                                   0, 0, 
+                                   frame.size.width, frame.size.height);
+    }
+
+  HideMenuBar ();
 
   gdk_synthesize_window_state (window, 0, GDK_WINDOW_STATE_FULLSCREEN);
 }
@@ -2765,8 +2782,7 @@
   g_return_if_fail (GDK_IS_WINDOW (window));
   g_return_if_fail (WINDOW_IS_TOPLEVEL (window));
 
-  geometry = g_object_get_data (G_OBJECT (window), FULLSCREEN_DATA);
-
+  geometry = get_fullscreen_geometry (window);
   if (geometry)
     {
       ShowMenuBar ();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]