summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorMichael Natterer <mitch@imendio.com>2006-08-10 09:16:38 +0000
committerMichael Natterer <mitch@src.gnome.org>2006-08-10 09:16:38 +0000
commitcac12e4d656ed06da022a107312092e4743651d4 (patch)
tree35bf97c6e94efff47e9cb600cba28b9da44b3575 /gdk
parent1865c0a178941b2ac96c69573e1295f5ba7e2e8a (diff)
downloadgtk+-cac12e4d656ed06da022a107312092e4743651d4.tar.gz
don't try to set the state of unmapped windows, call
2006-08-10 Michael Natterer <mitch@imendio.com> * gdk/quartz/gdkwindow-quartz.c (gdk_window_maximize) (gdk_window_unmaximize) (gdk_window_iconify) (gdk_window_deiconify): don't try to set the state of unmapped windows, call gdk_synthesize_window_state() instead. Also added autorelease pools back, seems they are needed after all. * gdk/quartz/gdkwindow-quartz.c (show_window_internal): maximize and iconify windows here if the state says so.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/quartz/gdkwindow-quartz.c78
1 files changed, 68 insertions, 10 deletions
diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c
index d70be11ac0..897a352ff9 100644
--- a/gdk/quartz/gdkwindow-quartz.c
+++ b/gdk/quartz/gdkwindow-quartz.c
@@ -754,7 +754,8 @@ all_parents_shown (GdkWindowObject *private)
}
static void
-show_window_internal (GdkWindow *window, gboolean raise)
+show_window_internal (GdkWindow *window,
+ gboolean raise)
{
GdkWindowObject *private;
GdkWindowImplQuartz *impl;
@@ -783,6 +784,12 @@ show_window_internal (GdkWindow *window, gboolean raise)
gdk_synthesize_window_state (window, GDK_WINDOW_STATE_WITHDRAWN, 0);
+ if (private->state & GDK_WINDOW_STATE_MAXIMIZED)
+ gdk_window_maximize (window);
+
+ if (private->state & GDK_WINDOW_STATE_ICONIFIED)
+ gdk_window_iconify (window);
+
GDK_QUARTZ_RELEASE_POOL;
}
@@ -1788,14 +1795,26 @@ gdk_window_maximize (GdkWindow *window)
g_return_if_fail (GDK_IS_WINDOW (window));
-
if (GDK_WINDOW_DESTROYED (window))
return;
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl);
- if (impl->toplevel && ![impl->toplevel isZoomed])
- [impl->toplevel zoom:nil];
+ if (GDK_WINDOW_IS_MAPPED (window))
+ {
+ GDK_QUARTZ_ALLOC_POOL;
+
+ if (impl->toplevel && ![impl->toplevel isZoomed])
+ [impl->toplevel zoom:nil];
+
+ GDK_QUARTZ_RELEASE_POOL;
+ }
+ else
+ {
+ gdk_synthesize_window_state (window,
+ 0,
+ GDK_WINDOW_STATE_MAXIMIZED);
+ }
}
void
@@ -1810,8 +1829,21 @@ gdk_window_unmaximize (GdkWindow *window)
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl);
- if (impl->toplevel && [impl->toplevel isZoomed])
- [impl->toplevel zoom:nil];
+ if (GDK_WINDOW_IS_MAPPED (window))
+ {
+ GDK_QUARTZ_ALLOC_POOL;
+
+ if (impl->toplevel && [impl->toplevel isZoomed])
+ [impl->toplevel zoom:nil];
+
+ GDK_QUARTZ_RELEASE_POOL;
+ }
+ else
+ {
+ gdk_synthesize_window_state (window,
+ GDK_WINDOW_STATE_MAXIMIZED,
+ 0);
+ }
}
void
@@ -1826,8 +1858,21 @@ gdk_window_iconify (GdkWindow *window)
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl);
- if (impl->toplevel)
- [impl->toplevel miniaturize:nil];
+ if (GDK_WINDOW_IS_MAPPED (window))
+ {
+ GDK_QUARTZ_ALLOC_POOL;
+
+ if (impl->toplevel)
+ [impl->toplevel miniaturize:nil];
+
+ GDK_QUARTZ_RELEASE_POOL;
+ }
+ else
+ {
+ gdk_synthesize_window_state (window,
+ 0,
+ GDK_WINDOW_STATE_ICONIFIED);
+ }
}
void
@@ -1842,8 +1887,21 @@ gdk_window_deiconify (GdkWindow *window)
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl);
- if (impl->toplevel)
- [impl->toplevel deminiaturize:nil];
+ if (GDK_WINDOW_IS_MAPPED (window))
+ {
+ GDK_QUARTZ_ALLOC_POOL;
+
+ if (impl->toplevel)
+ [impl->toplevel deminiaturize:nil];
+
+ GDK_QUARTZ_RELEASE_POOL;
+ }
+ else
+ {
+ gdk_synthesize_window_state (window,
+ GDK_WINDOW_STATE_ICONIFIED,
+ 0);
+ }
}
void