diff options
author | Christoph Reiter <reiter.christoph@gmail.com> | 2015-07-20 09:05:52 +0200 |
---|---|---|
committer | Christoph Reiter <creiter@src.gnome.org> | 2015-07-23 13:19:09 +0200 |
commit | eb37fd22e7d50cfd5c6131aeaeb230469af5056c (patch) | |
tree | 4d2de37ff9a582ac7a99df4cfb1f98be8cb70e84 /gdk/quartz/gdkwindow-quartz.c | |
parent | 61ce90a8e25ea63248ffa12707148e449494f34b (diff) | |
download | gtk+-eb37fd22e7d50cfd5c6131aeaeb230469af5056c.tar.gz |
quartz: implement maximized/unmaximized
Instead of using the default zoom behaviour use the internal
maximized state for selecting our own zoom target. This makes
zooming work for CSD windows where for some reason the
given default zoom target is the current window frame itself
resulting in a shadowless window of the same size.
While this makes the zoom button behave a bit different as expected
it makes things more consistent with other platforms and fixes CSD
zooming.
Diffstat (limited to 'gdk/quartz/gdkwindow-quartz.c')
-rw-r--r-- | gdk/quartz/gdkwindow-quartz.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index f05ab9469f..7d6bfe4dad 100644 --- a/gdk/quartz/gdkwindow-quartz.c +++ b/gdk/quartz/gdkwindow-quartz.c @@ -2477,56 +2477,48 @@ static void gdk_quartz_window_maximize (GdkWindow *window) { GdkWindowImplQuartz *impl; + gboolean maximized; if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) return; impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); + maximized = gdk_window_get_state (window) & GDK_WINDOW_STATE_MAXIMIZED; if (GDK_WINDOW_IS_MAPPED (window)) { GDK_QUARTZ_ALLOC_POOL; - if (impl->toplevel && ![impl->toplevel isZoomed]) - [impl->toplevel zoom:nil]; + if (impl->toplevel && !maximized) + [impl->toplevel zoom:nil]; GDK_QUARTZ_RELEASE_POOL; } - else - { - gdk_synthesize_window_state (window, - 0, - GDK_WINDOW_STATE_MAXIMIZED); - } } static void gdk_quartz_window_unmaximize (GdkWindow *window) { GdkWindowImplQuartz *impl; + gboolean maximized; if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) return; impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); + maximized = gdk_window_get_state (window) & GDK_WINDOW_STATE_MAXIMIZED; if (GDK_WINDOW_IS_MAPPED (window)) { GDK_QUARTZ_ALLOC_POOL; - if (impl->toplevel && [impl->toplevel isZoomed]) - [impl->toplevel zoom:nil]; + if (impl->toplevel && maximized) + [impl->toplevel zoom:nil]; GDK_QUARTZ_RELEASE_POOL; } - else - { - gdk_synthesize_window_state (window, - GDK_WINDOW_STATE_MAXIMIZED, - 0); - } } static void |