mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-05 16:20:10 +00:00
win32: Ignore client requested window move/size during SIZEMOVE
This will just be fighting the user like in e.g. https://bugzilla.gnome.org/show_bug.cgi?id=64428
This commit is contained in:
parent
c87114cb14
commit
5bd8485a3d
@ -2853,13 +2853,19 @@ gdk_event_translate (MSG *msg,
|
||||
|
||||
case WM_ENTERSIZEMOVE:
|
||||
case WM_ENTERMENULOOP:
|
||||
if (msg->message == WM_ENTERSIZEMOVE)
|
||||
_modal_move_resize_window = msg->hwnd;
|
||||
|
||||
_gdk_win32_begin_modal_call ();
|
||||
break;
|
||||
|
||||
case WM_EXITSIZEMOVE:
|
||||
case WM_EXITMENULOOP:
|
||||
if (_modal_operation_in_progress)
|
||||
_gdk_win32_end_modal_call ();
|
||||
{
|
||||
_modal_move_resize_window = NULL;
|
||||
_gdk_win32_end_modal_call ();
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_CAPTURECHANGED:
|
||||
@ -2867,7 +2873,10 @@ gdk_event_translate (MSG *msg,
|
||||
select move/size in the menu and then click somewhere without
|
||||
moving/resizing. We work around this using WM_CAPTURECHANGED. */
|
||||
if (_modal_operation_in_progress)
|
||||
_gdk_win32_end_modal_call ();
|
||||
{
|
||||
_modal_move_resize_window = NULL;
|
||||
_gdk_win32_end_modal_call ();
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
|
@ -79,6 +79,7 @@ gint _gdk_input_ignore_wintab = FALSE;
|
||||
gint _gdk_max_colors = 0;
|
||||
|
||||
gboolean _modal_operation_in_progress = FALSE;
|
||||
HWND _modal_move_resize_window = NULL;
|
||||
gboolean _ignore_destroy_clipboard = FALSE;
|
||||
|
||||
HGLOBAL _delayed_rendering_data = NULL;
|
||||
|
@ -467,6 +467,8 @@ extern gint _gdk_max_colors;
|
||||
/* TRUE while a modal sizing, moving, or dnd operation is in progress */
|
||||
extern gboolean _modal_operation_in_progress;
|
||||
|
||||
extern HWND _modal_move_resize_window;
|
||||
|
||||
/* TRUE when we are emptying the clipboard ourselves */
|
||||
extern gboolean _ignore_destroy_clipboard;
|
||||
|
||||
|
@ -1310,6 +1310,11 @@ gdk_win32_window_move_resize (GdkWindow *window,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
/* We ignore changes to the window being moved or resized by the
|
||||
user, as we don't want to fight the user */
|
||||
if (GDK_WINDOW_HWND (window) == _modal_move_resize_window)
|
||||
return;
|
||||
|
||||
if (with_move && (width < 0 && height < 0))
|
||||
{
|
||||
gdk_win32_window_move (window, x, y);
|
||||
|
Loading…
Reference in New Issue
Block a user