}
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);
}
to.height = gdk_surface_get_height (window);
to.y = 0;
+ to.x = window->x;
to.height = maxysize;
from = context->indicator_target;
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;