hw/xwin: In multiwindow mode, don't grab native input focus for new windows which hint they don't want it
In multiwindow mode, avoid grabbing the input focus for newly created windows which have InputHint FALSE (this is used by e.g. glean to avoid every test window grabbing the focus) Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
This commit is contained in:
parent
25caa8565d
commit
c0f3709501
|
@ -47,6 +47,16 @@ typedef struct {
|
|||
/* this structure may be extended in the future */
|
||||
} WinXWMHints;
|
||||
|
||||
/* Window manager hints mask bits */
|
||||
#define InputHint (1L << 0)
|
||||
#define StateHint (1L << 1)
|
||||
#define IconPixmapHint (1L << 2)
|
||||
#define IconWindowHint (1L << 3)
|
||||
#define IconPositionHint (1L << 4)
|
||||
#define IconMaskHint (1L << 5)
|
||||
#define WindowGroupHint (1L << 6)
|
||||
#define UrgencyHint (1L << 8)
|
||||
#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint|IconPositionHint|IconMaskHint|WindowGroupHint)
|
||||
|
||||
/*
|
||||
* new version containing base_width, base_height, and win_gravity fields;
|
||||
|
|
|
@ -898,8 +898,23 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
|
|||
& ~WS_CAPTION & ~WS_SIZEBOX);
|
||||
|
||||
winUpdateWindowPosition (hwnd, FALSE, &zstyle);
|
||||
|
||||
{
|
||||
WinXWMHints hints;
|
||||
if (winMultiWindowGetWMHints(pWin, &hints))
|
||||
{
|
||||
/*
|
||||
Give the window focus, unless it has an InputHint
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
wmMsg.msg = WM_WM_MAP3;
|
||||
}
|
||||
else /* It is an overridden window so make it top of Z stack */
|
||||
|
|
Loading…
Reference in New Issue