mirror of
https://gitlab.winehq.org/wine/wine.git
synced 2024-11-19 17:06:04 -07:00
server: Don't update cursor pos in set_window_pos() if window wasn't moved.
Fixes a regression introduced by commit db9a4bc66a
.
This commit is contained in:
parent
8e2442584c
commit
698ab75a59
Notes:
Alexandre Julliard
2024-11-14 23:13:08 +01:00
Approved-by: Rémi Bernon (@rbernon) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/wine/merge_requests/6812
2 changed files with 18 additions and 2 deletions
|
@ -6187,6 +6187,13 @@ static const struct message WmMove_mouse[] = {
|
|||
{ 0 }
|
||||
};
|
||||
|
||||
static const struct message WmMove_mouse2[] = {
|
||||
{ WM_WINDOWPOSCHANGING, sent|wparam, SWP_NOACTIVATE },
|
||||
{ WM_GETTEXT, sent|optional },
|
||||
{ WM_GETMINMAXINFO, sent|defwinproc },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static void test_setwindowpos(void)
|
||||
{
|
||||
HWND hwnd;
|
||||
|
@ -6253,6 +6260,11 @@ static void test_setwindowpos(void)
|
|||
ok(res == TRUE, "SetWindowPos expected TRUE, got %Id.\n", res);
|
||||
flush_events();
|
||||
ok_sequence(WmMove_mouse, "MouseMove", FALSE);
|
||||
/* if the window and client rects were not changed WM_MOUSEMOVE is not sent. */
|
||||
res = SetWindowPos( hwnd, 0, 205, 205, 200, 200, SWP_NOZORDER | SWP_NOACTIVATE );
|
||||
ok(res == TRUE, "SetWindowPos expected TRUE, got %Id.\n", res);
|
||||
flush_events();
|
||||
ok_sequence(WmMove_mouse2, "MouseMove2", FALSE);
|
||||
ignore_mouse_messages = TRUE;
|
||||
|
||||
DestroyWindow(hwnd);
|
||||
|
|
|
@ -2488,7 +2488,7 @@ DECL_HANDLER(get_window_tree)
|
|||
/* set the position and Z order of a window */
|
||||
DECL_HANDLER(set_window_pos)
|
||||
{
|
||||
rectangle_t window_rect, client_rect, visible_rect, surface_rect, valid_rect;
|
||||
rectangle_t window_rect, client_rect, visible_rect, surface_rect, valid_rect, old_window, old_client;
|
||||
const rectangle_t *extra_rects = get_req_data();
|
||||
struct window *previous = NULL;
|
||||
struct window *top, *win = get_window( req->handle );
|
||||
|
@ -2558,9 +2558,13 @@ DECL_HANDLER(set_window_pos)
|
|||
|
||||
win->monitor_dpi = req->monitor_dpi;
|
||||
old_style = win->style;
|
||||
old_window = win->window_rect;
|
||||
old_client = win->client_rect;
|
||||
set_window_pos( win, previous, flags, &window_rect, &client_rect,
|
||||
&visible_rect, &surface_rect, &valid_rect );
|
||||
if (win->style & old_style & WS_VISIBLE) update_cursor_pos( win->desktop );
|
||||
if ((win->style & old_style & WS_VISIBLE) && (memcmp( &old_client, &win->client_rect, sizeof(old_client) )
|
||||
|| memcmp( &old_window, &win->window_rect, sizeof(old_window) )))
|
||||
update_cursor_pos( win->desktop );
|
||||
|
||||
if (win->paint_flags & SET_WINPOS_LAYERED_WINDOW) validate_whole_window( win );
|
||||
|
||||
|
|
Loading…
Reference in a new issue