Alexandre Julliard : server: Don' t clip update regions to the desktop window.
Alexandre Julliard
julliard at winehq.org
Thu Jul 5 15:25:54 CDT 2018
Module: wine
Branch: master
Commit: 8cfac3b218669edcef8b92ea8370b0579eb23ea9
URL: https://source.winehq.org/git/wine.git/?a=commit;h=8cfac3b218669edcef8b92ea8370b0579eb23ea9
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Jul 5 12:48:13 2018 +0200
server: Don't clip update regions to the desktop window.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/tests/msg.c | 4 ++--
server/window.c | 23 ++++++++---------------
2 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 0cfafe4..cb918fa 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -4760,7 +4760,7 @@ static void test_showwindow(void)
flush_sequence();
ShowWindow(hwnd, SW_SHOWMAXIMIZED);
ok_sequence(WmShowMaxPopupResizedSeq_todo,
- "ShowWindow(SW_SHOWMAXIMIZED):invisible maximized and resized popup TODO", TRUE);
+ "ShowWindow(SW_SHOWMAXIMIZED):invisible maximized and resized popup TODO", FALSE);
DestroyWindow(hwnd);
flush_sequence();
@@ -5339,7 +5339,7 @@ static void test_messages(void)
hwnd = CreateWindowExA(0, "TestWindowClass", "Test Popup", WS_POPUP | WS_VISIBLE,
-10, -10, 10000, 10000, NULL, 0, 0, NULL );
ok (hwnd != 0, "Failed to create popup window\n");
- ok_sequence(WmShowPopupExtremeLocationSeq, "RedrawWindow:show_popup_extreme_location", TRUE);
+ ok_sequence(WmShowPopupExtremeLocationSeq, "RedrawWindow:show_popup_extreme_location", FALSE);
DestroyWindow(hwnd);
diff --git a/server/window.c b/server/window.c
index 0a32d46..322001d 100644
--- a/server/window.c
+++ b/server/window.c
@@ -1141,27 +1141,20 @@ struct window_class* get_window_class( user_handle_t window )
/* the returned rectangle is in window coordinates; return 0 if rectangle is empty */
static int get_window_visible_rect( struct window *win, rectangle_t *rect, int frame )
{
- int offset_x = 0, offset_y = 0;
-
- if (!(win->style & WS_VISIBLE)) return 0;
+ int offset_x = win->window_rect.left, offset_y = win->window_rect.top;
*rect = frame ? win->window_rect : win->client_rect;
- if (!is_desktop_window(win))
- {
- offset_x = win->window_rect.left;
- offset_y = win->window_rect.top;
- }
- while (win->parent)
+ if (!(win->style & WS_VISIBLE)) return 0;
+ if (is_desktop_window( win )) return 1;
+
+ while (!is_desktop_window( win->parent ))
{
win = win->parent;
if (!(win->style & WS_VISIBLE) || win->style & WS_MINIMIZE) return 0;
- if (!is_desktop_window(win))
- {
- offset_x += win->client_rect.left;
- offset_y += win->client_rect.top;
- offset_rect( rect, win->client_rect.left, win->client_rect.top );
- }
+ offset_x += win->client_rect.left;
+ offset_y += win->client_rect.top;
+ offset_rect( rect, win->client_rect.left, win->client_rect.top );
if (!intersect_rect( rect, rect, &win->client_rect )) return 0;
if (!intersect_rect( rect, rect, &win->window_rect )) return 0;
}
More information about the wine-cvs
mailing list