-
Notifications
You must be signed in to change notification settings - Fork 8.2k
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
Shut down all controls under a tab before we remove it from the list #4337
Conversation
This commit introduces a new recursive pane shutdown that will give all controls under a tab a chance to clean up their state before beign detached from the UI. It also reorders the call to LastTabClosed() so that the application does not exit before the final connections are terminated. It also teaches TSFInputControl how to shut down to avoid a dramatic platform bug. Fixes #4159. Fixes #4336.
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.
Fundamentally I approve of this, but maybe I'm a little confused now between the difference between Shutdown
and Close
on the Pane
. Maybe add a comment to Shutdown
indicating that this method will result in Pane::Close
getting called (if that's correct)
It will not result in Pane::Close being called -- the pane remains in the UI tree until it's otherwise removed, but all of its controls and connections go inert. |
So if the control cleanly closes though, like the pre- |
Yes. If the control is closed and removed from the UI hierarchy (because its leaf pane has been resorbed by its parent), its |
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
plz /azp run |
Hello @zadjii-msft! Because this pull request has the p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (
|
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
…4337) This commit introduces a new recursive pane shutdown that will give all controls under a tab a chance to clean up their state before beign detached from the UI. It also reorders the call to LastTabClosed() so that the application does not exit before the final connections are terminated. It also teaches TSFInputControl how to shut down to avoid a dramatic platform bug. Fixes #4159. Fixes #4336. ## PR Checklist * [x] CLA signed * [x] I've discussed this with core contributors already. ## Validation Steps Performed Validated through manual terminal teardown within and without the debugger, given a crazy number of panes and tabs. (cherry picked from commit 82f302b)
🎉 Handy links: |
This commit introduces a new recursive pane shutdown that will give all
controls under a tab a chance to clean up their state before beign
detached from the UI. It also reorders the call to LastTabClosed() so
that the application does not exit before the final connections are
terminated.
It also teaches TSFInputControl how to shut down to avoid a dramatic
platform bug.
Fixes #4159.
Fixes #4336.
PR Checklist
Validation Steps Performed
Validated through manual terminal teardown within and without the debugger, given a crazy number of panes and tabs.