xwin: In multiwindow mode, look up the HWND for the parent window

Rather than only looking at the foreground window to see if it matches
the WM_TRANSIENT_FOR window XID, lookup that XID and fetch the HWND from
the window privates.

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 2015-07-02 19:21:11 +01:00 committed by Adam Jackson
parent 856a28f637
commit e7f87f8f76

View File

@ -523,9 +523,13 @@ winCreateWindowsWindow(WindowPtr pWin)
if (winMultiWindowGetTransientFor(pWin, &daddyId)) { if (winMultiWindowGetTransientFor(pWin, &daddyId)) {
if (daddyId) { if (daddyId) {
hFore = GetForegroundWindow(); WindowPtr pParent;
if (hFore && (daddyId != (Window) (INT_PTR) GetProp(hFore, WIN_WID_PROP))) int res = dixLookupWindow(&pParent, daddyId, serverClient, DixReadAccess);
hFore = NULL; if (res == Success)
{
winPrivWinPtr pParentPriv = winGetWindowPriv(pParent);
hFore = pParentPriv->hWnd;
}
} }
} }
else { else {