hw/xwin: Stop assuming WS_EX_APPWINDOW style in WM_SHOWWINDOW

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
This commit is contained in:
Jon TURNEY 2012-02-11 12:22:17 +00:00
parent 56e94403f8
commit d6dcde7a03

View File

@ -870,41 +870,36 @@ winTopLevelWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
/* */ /* */
if (!pWin->overrideRedirect) { if (!pWin->overrideRedirect) {
HWND zstyle = HWND_NOTOPMOST;
/* Flag that this window needs to be made active when clicked */ /* Flag that this window needs to be made active when clicked */
SetProp(hwnd, WIN_NEEDMANAGE_PROP, (HANDLE) 1); SetProp(hwnd, WIN_NEEDMANAGE_PROP, (HANDLE) 1);
if (!(GetWindowLongPtr(hwnd, GWL_EXSTYLE) & WS_EX_APPWINDOW)) { /* Set the transient style flags */
HWND zstyle = HWND_NOTOPMOST; if (GetParent(hwnd))
SetWindowLongPtr(hwnd, GWL_STYLE,
WS_POPUP | WS_OVERLAPPED | WS_SYSMENU |
WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
/* Set the window standard style flags */
else
SetWindowLongPtr(hwnd, GWL_STYLE,
(WS_POPUP | WS_OVERLAPPEDWINDOW |
WS_CLIPCHILDREN | WS_CLIPSIBLINGS)
& ~WS_CAPTION & ~WS_SIZEBOX);
/* Set the window extended style flags */ winUpdateWindowPosition(hwnd, &zstyle);
SetWindowLongPtr(hwnd, GWL_EXSTYLE, WS_EX_APPWINDOW);
/* Set the transient style flags */ {
if (GetParent(hwnd)) WinXWMHints hints;
SetWindowLongPtr(hwnd, GWL_STYLE,
WS_POPUP | WS_OVERLAPPED | WS_SYSMENU |
WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
/* Set the window standard style flags */
else
SetWindowLongPtr(hwnd, GWL_STYLE,
(WS_POPUP | WS_OVERLAPPEDWINDOW |
WS_CLIPCHILDREN | WS_CLIPSIBLINGS)
& ~WS_CAPTION & ~WS_SIZEBOX);
winUpdateWindowPosition(hwnd, &zstyle); if (winMultiWindowGetWMHints(pWin, &hints)) {
/*
{ Give the window focus, unless it has an InputHint
WinXWMHints hints; which is FALSE (this is used by e.g. glean to
avoid every test window grabbing the focus)
if (winMultiWindowGetWMHints(pWin, &hints)) { */
/* if (!((hints.flags & InputHint) && (!hints.input))) {
Give the window focus, unless it has an InputHint SetForegroundWindow(hwnd);
which is FALSE (this is used by e.g. glean to
avoid every test window grabbing the focus)
*/
if (!((hints.flags & InputHint) && (!hints.input))) {
SetForegroundWindow(hwnd);
}
} }
} }
} }