forked from AuroraMiddleware/gtk
GDK W32: Add/subtract shadow when drag-resizing
Implements gdk_win32_window_set_shadow_width(). Uses shadow width/height to adjust max tracking size, allowing windows to be drag-resized to cover the whole desktop. Also uses SM_C*VIRTUALSCREEN instead of SM_C*MAXTRACK. https://bugzilla.gnome.org/show_bug.cgi?id=763013
This commit is contained in:
parent
b0131616b2
commit
f853283d7b
@ -2044,8 +2044,8 @@ _gdk_win32_window_fill_min_max_info (GdkWindow *window,
|
||||
mmi->ptMaxSize.y = nearest_info.rcWork.bottom - nearest_info.rcWork.top;
|
||||
}
|
||||
|
||||
mmi->ptMaxTrackSize.x = GetSystemMetrics (SM_CXMAXTRACK);
|
||||
mmi->ptMaxTrackSize.y = GetSystemMetrics (SM_CYMAXTRACK);
|
||||
mmi->ptMaxTrackSize.x = GetSystemMetrics (SM_CXVIRTUALSCREEN) + impl->margins_x;
|
||||
mmi->ptMaxTrackSize.y = GetSystemMetrics (SM_CYVIRTUALSCREEN) + impl->margins_y;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
@ -5764,6 +5764,26 @@ GtkShowWindow (HWND hwnd,
|
||||
return ShowWindow (hwnd, cmd_show);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_win32_window_set_shadow_width (GdkWindow *window,
|
||||
gint left,
|
||||
gint right,
|
||||
gint top,
|
||||
gint bottom)
|
||||
{
|
||||
GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl);
|
||||
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
return;
|
||||
|
||||
impl->margins.left = left;
|
||||
impl->margins.right = right;
|
||||
impl->margins.top = top;
|
||||
impl->margins.bottom = bottom;
|
||||
impl->margins_x = left + right;
|
||||
impl->margins_y = top + bottom;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_window_impl_win32_class_init (GdkWindowImplWin32Class *klass)
|
||||
{
|
||||
@ -5840,6 +5860,7 @@ gdk_window_impl_win32_class_init (GdkWindowImplWin32Class *klass)
|
||||
impl_class->get_decorations = gdk_win32_window_get_decorations;
|
||||
impl_class->set_functions = gdk_win32_window_set_functions;
|
||||
|
||||
impl_class->set_shadow_width = gdk_win32_window_set_shadow_width;
|
||||
impl_class->begin_resize_drag = gdk_win32_window_begin_resize_drag;
|
||||
impl_class->begin_move_drag = gdk_win32_window_begin_move_drag;
|
||||
impl_class->set_opacity = gdk_win32_window_set_opacity;
|
||||
|
@ -244,6 +244,13 @@ struct _GdkWindowImplWin32
|
||||
gint initial_x;
|
||||
gint initial_y;
|
||||
|
||||
/* left/right/top/bottom width of the shadow/resize-grip around the window */
|
||||
RECT margins;
|
||||
|
||||
/* left+right and top+bottom from @margins */
|
||||
gint margins_x;
|
||||
gint margins_y;
|
||||
|
||||
guint no_bg : 1;
|
||||
guint inhibit_configure : 1;
|
||||
guint override_redirect : 1;
|
||||
|
Loading…
Reference in New Issue
Block a user