diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c index 1509866191..1a26009dd4 100644 --- a/gdk/win32/gdksurface-win32.c +++ b/gdk/win32/gdksurface-win32.c @@ -2291,95 +2291,87 @@ stash_window (GdkSurface *window, } static void -snap_up (GdkSurface *window) +snap_up (GdkSurface *surface) { SHORT maxysize; int x, y; int width, height; GdkWin32Surface *impl; - impl = GDK_WIN32_SURFACE (window); + impl = GDK_WIN32_SURFACE (surface); impl->snap_state = GDK_WIN32_AEROSNAP_STATE_FULLUP; - stash_window (window, impl); + stash_window (surface, impl); maxysize = GetSystemMetrics (SM_CYVIRTUALSCREEN) / impl->surface_scale; x = y = 0; - width = gdk_surface_get_width (window); + width = gdk_surface_get_width (surface); 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; - /* 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 - */ - compute_toplevel_size (window, TRUE, &width, &height); - - gdk_win32_surface_move_resize (window, x, y, width, height); + gdk_win32_surface_move_resize (surface, x, y, width, height); } static void -snap_left (GdkSurface *window, +snap_left (GdkSurface *surface, GdkMonitor *monitor, GdkMonitor *snap_monitor) { GdkRectangle rect; GdkWin32Surface *impl; - impl = GDK_WIN32_SURFACE (window); + impl = GDK_WIN32_SURFACE (surface); impl->snap_state = GDK_WIN32_AEROSNAP_STATE_HALFLEFT; gdk_win32_monitor_get_workarea (snap_monitor, &rect); - stash_window (window, impl); + stash_window (surface, impl); 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; - gdk_win32_surface_move_resize (window, + gdk_win32_surface_move_resize (surface, rect.x, rect.y, rect.width, rect.height); } static void -snap_right (GdkSurface *window, +snap_right (GdkSurface *surface, GdkMonitor *monitor, GdkMonitor *snap_monitor) { GdkRectangle rect; GdkWin32Surface *impl; - impl = GDK_WIN32_SURFACE (window); + impl = GDK_WIN32_SURFACE (surface); impl->snap_state = GDK_WIN32_AEROSNAP_STATE_HALFRIGHT; gdk_win32_monitor_get_workarea (snap_monitor, &rect); - stash_window (window, impl); + stash_window (surface, impl); 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; - gdk_win32_surface_move_resize (window, + gdk_win32_surface_move_resize (surface, rect.x, rect.y, rect.width, rect.height); } @@ -3010,6 +3002,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; @@ -3162,6 +3155,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;