-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
7571: do not activate terminal window upon settings modificaion #7887
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Excellent catch. Thanks a bunch for doing this!
Feel free to unmark this as a draft; it looks fairly complete to me! Are you participating in Hacktoberfest? I can mark these pull requests as eligible if so. |
Thanks! And thanks for reminding about Hacktoberfest - I signed up to it right now. Why not to plant a tree? 😄 |
Thanks again for the contribution! |
Took this as an easy starter. The method IslandWindow::SetAlwaysOnTop is triggered once terminal settings are reloaded (in TerminalPage::_RefreshUIForSettingsReload flow). This method calls SetWindowPos without SWP_NOACTIVATE. As a result the window gets activated, the focus is set and the cursor starts blinking. Added SWP_NOACTIVATE in all SetWindowPos calls from IslandWindow and NoClientIslandWindow (where it was missing). Please let me know if this is an overkill - it is not required to fix the issue, however seems a good practice, that might help if we decide to apply more settings immediately. ## Validation Steps Performed * Only manual testing - please guide me to the relevant UT framework, if exists. * Trying to reproduce this with VS attached doesn't work - the window gets the focus in any case. * Tested as a standalone application, by modifying different settings (and comparing the results before and after the fix). * Checked with Spy++ that no WM_ACTIVATE / WM_SETFOCUS is thrown upon settings modification * Applied terminal resizing, toggling full screen and focus mode to check no regression was introduced. Closes #7571 (cherry picked from commit cb732a4)
🎉 Handy links: |
🎉 Handy links: |
Summary of the Pull Request
Took this as an easy starter. The method IslandWindow::SetAlwaysOnTop is triggered once terminal settings are reloaded (in TerminalPage::_RefreshUIForSettingsReload flow). This method calls SetWindowPos without SWP_NOACTIVATE. As a result the window gets activated, the focus is set and the cursor starts blinking.
Added SWP_NOACTIVATE flag there and in few additional places in island windows. See a discussion below.
References
PR Checklist
Detailed Description of the Pull Request / Additional comments
Added SWP_NOACTIVATE in all SetWindowPos calls from IslandWindow and NoClientIslandWindow (where it was missing). Please let me know if this is an overkill - it is not required to fix the issue, however seems a good practice, that might help if we decide to apply more settings immediately.
Validation Steps Performed