[Bug 13951] SetParent doesn't behave properly
wine-bugs at winehq.org
wine-bugs at winehq.org
Thu Feb 3 04:20:01 CST 2011
http://bugs.winehq.org/show_bug.cgi?id=13951
--- Comment #4 from Dmitry Timoshkov <dmitry at codeweavers.com> 2011-02-03 04:20:00 CST ---
It appears that SetWindowPos() called from SetParent() fails to make
the window foreground if new parent of the window is not desktop.
I.e. if the window is WS_POPUP and its parent is desktop, and then
SetParent() replaces desktop with a new parent which is a WS_CHILD
window, server/queue.c,set_foreground_window() refuses to make WS_POPUP
window a foreground one, therefore all mouse input gets ignored for
that window.
The only relevant part which fixes the bug is:
diff --git a/server/window.c b/server/window.c
index 635dd9b..c7ccc27 100644
--- a/server/window.c
+++ b/server/window.c
@@ -559,7 +559,7 @@ int is_child_window( user_handle_t parent, user_handle_t
child )
int is_top_level_window( user_handle_t window )
{
struct window *win = get_user_object( window, USER_WINDOW );
- return (win && (is_desktop_window(win) ||
is_desktop_window(win->parent)));
+ return (win && ((win->style & (WS_CHILD | WS_POPUP)) != WS_CHILD));
}
/* make a window active if possible */
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list