forked from AuroraMiddleware/gtk
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
538ab4fca7
commit
36a28d616f
@ -2660,13 +2660,19 @@ gdk_event_translate (MSG *msg,
|
|||||||
|
|
||||||
case WM_ENTERSIZEMOVE:
|
case WM_ENTERSIZEMOVE:
|
||||||
case WM_ENTERMENULOOP:
|
case WM_ENTERMENULOOP:
|
||||||
|
if (msg->message == WM_ENTERSIZEMOVE)
|
||||||
|
_modal_move_resize_window = msg->hwnd;
|
||||||
|
|
||||||
_gdk_win32_begin_modal_call ();
|
_gdk_win32_begin_modal_call ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_EXITSIZEMOVE:
|
case WM_EXITSIZEMOVE:
|
||||||
case WM_EXITMENULOOP:
|
case WM_EXITMENULOOP:
|
||||||
if (_modal_operation_in_progress)
|
if (_modal_operation_in_progress)
|
||||||
_gdk_win32_end_modal_call ();
|
{
|
||||||
|
_modal_move_resize_window = NULL;
|
||||||
|
_gdk_win32_end_modal_call ();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_CAPTURECHANGED:
|
case WM_CAPTURECHANGED:
|
||||||
@ -2674,7 +2680,10 @@ gdk_event_translate (MSG *msg,
|
|||||||
select move/size in the menu and then click somewhere without
|
select move/size in the menu and then click somewhere without
|
||||||
moving/resizing. We work around this using WM_CAPTURECHANGED. */
|
moving/resizing. We work around this using WM_CAPTURECHANGED. */
|
||||||
if (_modal_operation_in_progress)
|
if (_modal_operation_in_progress)
|
||||||
_gdk_win32_end_modal_call ();
|
{
|
||||||
|
_modal_move_resize_window = NULL;
|
||||||
|
_gdk_win32_end_modal_call ();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_WINDOWPOSCHANGING:
|
case WM_WINDOWPOSCHANGING:
|
||||||
|
@ -79,6 +79,7 @@ gint _gdk_input_ignore_wintab = FALSE;
|
|||||||
gint _gdk_max_colors = 0;
|
gint _gdk_max_colors = 0;
|
||||||
|
|
||||||
gboolean _modal_operation_in_progress = FALSE;
|
gboolean _modal_operation_in_progress = FALSE;
|
||||||
|
HWND _modal_move_resize_window = NULL;
|
||||||
gboolean _ignore_destroy_clipboard = FALSE;
|
gboolean _ignore_destroy_clipboard = FALSE;
|
||||||
|
|
||||||
HGLOBAL _delayed_rendering_data = NULL;
|
HGLOBAL _delayed_rendering_data = NULL;
|
||||||
|
@ -343,6 +343,8 @@ extern gint _gdk_max_colors;
|
|||||||
/* TRUE while a modal sizing, moving, or dnd operation is in progress */
|
/* TRUE while a modal sizing, moving, or dnd operation is in progress */
|
||||||
extern gboolean _modal_operation_in_progress;
|
extern gboolean _modal_operation_in_progress;
|
||||||
|
|
||||||
|
extern HWND _modal_move_resize_window;
|
||||||
|
|
||||||
/* TRUE when we are emptying the clipboard ourselves */
|
/* TRUE when we are emptying the clipboard ourselves */
|
||||||
extern gboolean _ignore_destroy_clipboard;
|
extern gboolean _ignore_destroy_clipboard;
|
||||||
|
|
||||||
|
@ -1201,6 +1201,11 @@ gdk_win32_window_move_resize (GdkWindow *window,
|
|||||||
gint width,
|
gint width,
|
||||||
gint height)
|
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))
|
if (with_move && (width < 0 && height < 0))
|
||||||
{
|
{
|
||||||
gdk_win32_window_move (window, x, y);
|
gdk_win32_window_move (window, x, y);
|
||||||
|
Loading…
Reference in New Issue
Block a user