[gtk/wip.win32.fixes: 38/42] GDK-Win32: Fix AeroSnap
- From: Chun-wei Fan <fanchunwei src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip.win32.fixes: 38/42] GDK-Win32: Fix AeroSnap
- Date: Tue, 6 Jul 2021 09:55:26 +0000 (UTC)
commit 49188fb95cff6c92eddfb07c1de4e1ed77329ac2
Author: Chun-wei Fan <fanchunwei src gnome org>
Date: Tue Jul 6 17:15:39 2021 +0800
GDK-Win32: Fix AeroSnap
As we are constantly asking the toplevel surface to configure during a
request layout for most cases, we can now try to fix things in the
AeroSnap snap_up(), as we removed the need to call compute_toplevel_size()
there.
The snap up indicator drawing and positioning should now be in their
proper locations, and the positioning of the surfaces upon snap
left/right/up should be corrected on systems with HiDPI displays.
gdk/win32/gdksurface-win32.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
---
diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c
index 53f4fdd1f3..f3c6128064 100644
--- a/gdk/win32/gdksurface-win32.c
+++ b/gdk/win32/gdksurface-win32.c
@@ -2308,8 +2308,8 @@ snap_up (GdkSurface *window)
y = 0;
height = maxysize;
- x = x - impl->shadow.left;
- y = y - impl->shadow.top;
+ x = surface->x - impl->shadow.left / impl->surface_scale;
+ y = y - impl->shadow.top / impl->surface_scale;
width += impl->shadow_x;
height += impl->shadow_y;
@@ -2344,8 +2344,8 @@ snap_left (GdkSurface *window,
rect.width = rect.width / 2;
- rect.x = rect.x - impl->shadow.left;
- rect.y = rect.y - impl->shadow.top;
+ rect.x = rect.x - impl->shadow.left / impl->surface_scale;
+ rect.y = rect.y - impl->shadow.top / impl->surface_scale;
rect.width = rect.width + impl->shadow_x;
rect.height = rect.height + impl->shadow_y;
@@ -2379,8 +2379,8 @@ snap_right (GdkSurface *window,
rect.width = rect.width / 2;
rect.x += rect.width;
- rect.x = rect.x - impl->shadow.left;
- rect.y = rect.y - impl->shadow.top;
+ rect.x = rect.x - impl->shadow.left / impl->surface_scale;
+ rect.y = rect.y - impl->shadow.top / impl->surface_scale;
rect.width = rect.width + impl->shadow_x;
rect.height = rect.height + impl->shadow_y;
@@ -3021,6 +3021,7 @@ update_fullup_indicator (GdkSurface *window,
to.height = gdk_surface_get_height (window);
to.y = 0;
+ to.x = window->x;
to.height = maxysize;
from = context->indicator_target;
@@ -3173,6 +3174,7 @@ start_indicator (GdkSurface *window,
end_size.height = workarea.height;
break;
case GDK_WIN32_AEROSNAP_STATE_FULLUP:
+ start_size.x = end_size.x = window->x;
end_size.y = 0;
end_size.height = maxysize;
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]