[gtk/wip.win32.fixes: 37/42] GDK-Win32: Cleanup fix for maximizing/minimizing
- From: Chun-wei Fan <fanchunwei src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip.win32.fixes: 37/42] GDK-Win32: Cleanup fix for maximizing/minimizing
- Date: Tue, 6 Jul 2021 09:55:26 +0000 (UTC)
commit b04306954307bd462294ff824fb3ea045b954230
Author: Chun-wei Fan <fanchunwei src gnome org>
Date: Tue Jul 6 16:51:22 2021 +0800
GDK-Win32: Cleanup fix for maximizing/minimizing
Use the ->maximizing field instead of checking the toplevel surface state.
gdk/win32/gdkevents-win32.c | 5 ++++-
gdk/win32/gdksurface-win32.c | 33 +++++++++------------------------
2 files changed, 13 insertions(+), 25 deletions(-)
---
diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c
index 77051a9739..7d05c64479 100644
--- a/gdk/win32/gdkevents-win32.c
+++ b/gdk/win32/gdkevents-win32.c
@@ -2772,7 +2772,10 @@ gdk_event_translate (MSG *msg,
windowpos->cy = our_mmi.ptMaxSize.y;
}
- impl->maximizing = FALSE;
+ /*
+ * We turn off impl->maximizing later, after we shown
+ * the window with SW_MAXIMIZE
+ */
}
}
diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c
index ec62112513..53f4fdd1f3 100644
--- a/gdk/win32/gdksurface-win32.c
+++ b/gdk/win32/gdksurface-win32.c
@@ -1441,6 +1441,7 @@ gdk_win32_surface_set_geometry_hints (GdkSurface *window,
GDK_SURFACE_HWND (window)));
fi = g_object_get_data (G_OBJECT (window), "fullscreen-info");
+
if (fi)
fi->hint_flags = geom_mask;
else
@@ -2206,12 +2207,6 @@ unsnap (GdkSurface *window,
GDK_NOTE (MISC, g_print ("Unsnapped window size %d x %d @ %d : %d\n", rect.width, rect.height, rect.x,
rect.y));
- if (GDK_IS_TOPLEVEL (window))
- {
- impl->drag_move_resize_context.native_move_resize_pending = FALSE;
- impl->inhibit_configure = TRUE;
- }
-
gdk_win32_surface_move_resize (window, rect.x, rect.y,
rect.width, rect.height);
@@ -2319,12 +2314,8 @@ snap_up (GdkSurface *window)
height += impl->shadow_y;
/* XXX: FIXME, AeroSnap snap_up() not really working well,
- *
- * * The snap_up() puts the window at the top left corner.
- * * Without the following call, the height maximizes but we see a spew of
- * "GdkToplevelSize: geometry size (x,y) exceeds bounds" warnings
+ * The snap_up() puts the surface at the top left corner.
*/
- compute_toplevel_size (window, TRUE, &width, &height);
if (GDK_IS_TOPLEVEL (window))
{
@@ -4205,6 +4196,9 @@ gdk_win32_surface_fullscreen (GdkSurface *window)
else
{
GdkWin32Surface *impl = GDK_WIN32_SURFACE (window);
+ impl->maximizing = TRUE;
+ impl->inhibit_configure = TRUE;
+ impl->drag_move_resize_context.native_move_resize_pending = FALSE;
monitor = MonitorFromWindow (GDK_SURFACE_HWND (window), MONITOR_DEFAULTTONEAREST);
mi.cbSize = sizeof (mi);
@@ -4423,8 +4417,7 @@ GtkShowWindow (GdkSurface *window,
}
/* Ensure that maximized window size is corrected later on */
- if (cmd_show == SW_MAXIMIZE)
- impl->maximizing = TRUE;
+ impl->maximizing = (cmd_show == SW_MAXIMIZE);
return ShowWindow (hwnd, cmd_show);
}
@@ -4603,8 +4596,6 @@ _gdk_win32_surface_request_layout (GdkSurface *surface)
if (GDK_IS_TOPLEVEL (surface))
{
- gboolean maximize = FALSE;
-
surface->x = rect.left / scale;
surface->y = rect.top / scale;
@@ -4613,16 +4604,10 @@ _gdk_win32_surface_request_layout (GdkSurface *surface)
* presented and it did not just undergo an AeroSnap op and it
* was not minimized nor minimized nor fullscreen'ed.
*/
- if (impl->toplevel_layout != NULL)
- {
- gdk_toplevel_layout_get_maximized (impl->toplevel_layout,
- &maximize);
- if (!maximize)
- gdk_toplevel_layout_get_fullscreen (impl->toplevel_layout,
- &maximize);
- }
+ if (impl->maximizing)
+ impl->inhibit_configure = TRUE;
- if (!impl->inhibit_configure && !maximize)
+ if (!impl->inhibit_configure)
impl->drag_move_resize_context.native_move_resize_pending = TRUE;
}
else if (GDK_IS_POPUP (surface))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]