steamcompmgr: Ignore overrides that are 1x1

This commit is contained in:
Joshua Ashton 2022-03-18 16:34:21 +00:00
parent edbf409d07
commit 499573c5fb

View file

@ -1951,10 +1951,19 @@ win_has_game_id( win *w )
return w->appID != 0; return w->appID != 0;
} }
static bool
win_is_useless( win *w )
{
// Windows that are 1x1 are pretty useless for override redirects.
// Just ignore them.
// Fixes the Xbox Login in Age of Empires 2: DE.
return w->a.width == 1 && w->a.height == 1;
}
static bool static bool
win_is_override_redirect( win *w ) win_is_override_redirect( win *w )
{ {
return w->a.override_redirect && !w->ignoreOverrideRedirect; return w->a.override_redirect && !w->ignoreOverrideRedirect && !win_is_useless( w );
} }
static bool static bool
@ -1966,7 +1975,7 @@ win_skip_taskbar_and_pager( win *w )
static bool static bool
win_maybe_a_dropdown( win *w ) win_maybe_a_dropdown( win *w )
{ {
return w->maybe_a_dropdown || win_is_override_redirect( w ); return ( w->maybe_a_dropdown || win_is_override_redirect( w ) ) && !win_is_useless( w );
} }
/* Returns true if a's focus priority > b's. /* Returns true if a's focus priority > b's.
@ -2461,9 +2470,9 @@ determine_and_apply_focus()
for ( win *focusable_window : vecPossibleFocusWindows ) for ( win *focusable_window : vecPossibleFocusWindows )
{ {
// Exclude windows that are 1x1, skip taskbar + pager or override redirect windows // Exclude windows that are useless (1x1), skip taskbar + pager or override redirect windows
// from the reported focusable windows to Steam. // from the reported focusable windows to Steam.
if ( ( focusable_window->a.width == 1 && focusable_window->a.height == 1 ) || if ( win_is_useless( focusable_window ) ||
win_skip_taskbar_and_pager( focusable_window ) || win_skip_taskbar_and_pager( focusable_window ) ||
focusable_window->a.override_redirect ) focusable_window->a.override_redirect )
continue; continue;