summaryrefslogtreecommitdiff
path: root/gdk/quartz/gdkwindow-quartz.c
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2015-07-20 09:05:52 +0200
committerChristoph Reiter <creiter@src.gnome.org>2015-07-23 13:19:09 +0200
commiteb37fd22e7d50cfd5c6131aeaeb230469af5056c (patch)
tree4d2de37ff9a582ac7a99df4cfb1f98be8cb70e84 /gdk/quartz/gdkwindow-quartz.c
parent61ce90a8e25ea63248ffa12707148e449494f34b (diff)
downloadgtk+-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.c24
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