steamcompmgr: Don't yank input focus from subwindows when dirtying focus for no reason

This commit is contained in:
Joshua Ashton 2022-02-15 02:46:35 +00:00
parent 367a92833d
commit b471a05d8a

View file

@ -2344,6 +2344,12 @@ determine_and_apply_focus(xwayland_ctx_t *ctx, std::vector<win*>& vecGlobalPossi
Window keyboardFocusWindow = keyboardFocusWin ? keyboardFocusWin->id : None;
// If the top level parent of our current keyboard window is the same as our target (top level) input focus window
// then keep focus on that and don't yank it away to the top level input focus window.
// Fixes dropdowns in Steam CEF.
if ( keyboardFocusWindow && ctx->currentKeyboardFocusWindow && find_win( ctx, ctx->currentKeyboardFocusWindow ) == keyboardFocusWin )
keyboardFocusWindow = ctx->currentKeyboardFocusWindow;
bool bResetToCorner = false;
bool bResetToCenter = false;
@ -2380,7 +2386,7 @@ determine_and_apply_focus(xwayland_ctx_t *ctx, std::vector<win*>& vecGlobalPossi
ctx->focus.inputFocusWindow = inputFocus;
ctx->focus.inputFocusMode = inputFocus->inputFocusMode;
ctx->currentKeyboardFocusWindow = keyboardFocusWin->id;
ctx->currentKeyboardFocusWindow = keyboardFocusWindow;
}
w = ctx->focus.focusWindow;