Skip to content
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

Update close button visibility based on BOTH settings and readonly mode #15914

Merged
merged 4 commits into from Sep 6, 2023

Conversation

zadjii-msft
Copy link
Member

TerminalTab::_RecalculateAndApplyReadOnly didn't know about whether a tab should be closable or not, based on the theme settings. Similarly (though, unreported), the theme update in TerminalPage::_updateAllTabCloseButtons didn't really know about readonly mode.

This fixes both these issues by moving responsibility for the tab close button visibility into TabBase itself.

Closes #15902

`TerminalTab::_RecalculateAndApplyReadOnly` didn't know about whether a tab should be closable or not, based on the theme settings. Similarly (though, unreported), the theme update in `TerminalPage::_updateAllTabCloseButtons` didn't really know about readonly mode.

This fixes both these issues by moving responsibility for the tab close button visibility into `TabBase` itself.

Closes #15902
@zadjii-msft zadjii-msft added this to To Cherry Pick in 1.18 Servicing Pipeline via automation Aug 31, 2023
@microsoft-github-policy-service microsoft-github-policy-service bot added Issue-Bug It either shouldn't be doing this or needs an investigation. Area-Settings Issues related to settings and customizability, for console or terminal Area-User Interface Issues pertaining to the user interface of the Console or Terminal Priority-3 A description (P3) Product-Terminal The new Windows Terminal. labels Aug 31, 2023
src/cascadia/TerminalApp/TabBase.cpp Outdated Show resolved Hide resolved
src/cascadia/TerminalApp/TabBase.cpp Outdated Show resolved Hide resolved
@microsoft-github-policy-service microsoft-github-policy-service bot added the Needs-Author-Feedback The original author of the issue/PR needs to come back and respond to something label Aug 31, 2023
void TabBase::CloseButtonVisibility(TabCloseButtonVisibility visibility)
{
_closeButtonVisibility = visibility;
_updateIsClosable();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does changing the readonly state call this? I didn't see it in the diffs, but this function is new.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I don't know how I like that. ReadOnly doesn't directly impact whether it's closeable unless it's a terminal tab and ReadOnly was set by recalculation.

Shouldn't setting ReadOnly automatically trigger this?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TerminalTab::_RecalculateAndApplyReadOnly calls into _updateIsClosable. It doesn't need to set CloseButtonVisibility itself. Think of CloseButtonVisibility as "the theme may or may not want the tab's close button visible", and readonly is a temporary override to that state.

This PR just disentagles the two, so they're not both just mucking with the IsClosable state directly.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it absolutely should not call CloseButtonVisibility! What I mean is, shouldn't setting ReadOnly automatically call _updateIsClosable? You've disentangled them, but you left a thread dangling over in some other function that randomly has to know to call _updateIsClosable.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_RecalculateAndApplyReadOnly gets called any time the active pane changes, or any time a control's ReadOnly state changes. So setting ReadOnly on the pane will set it on the control, who will tell the tab, who will then call _RecalculateAndApplyReadOnly

@microsoft-github-policy-service microsoft-github-policy-service bot removed the Needs-Author-Feedback The original author of the issue/PR needs to come back and respond to something label Sep 5, 2023
@zadjii-msft zadjii-msft merged commit 2f41d23 into main Sep 6, 2023
17 checks passed
@zadjii-msft zadjii-msft deleted the dev/migrie/b/15902-readonly-close-never branch September 6, 2023 13:51
@DHowett DHowett moved this from To Cherry Pick to Cherry Picked in 1.18 Servicing Pipeline Sep 22, 2023
DHowett pushed a commit that referenced this pull request Sep 22, 2023
…de (#15914)

`TerminalTab::_RecalculateAndApplyReadOnly` didn't know about whether a
tab should be closable or not, based on the theme settings. Similarly
(though, unreported), the theme update in
`TerminalPage::_updateAllTabCloseButtons` didn't really know about
readonly mode.

This fixes both these issues by moving responsibility for the tab close
button visibility into `TabBase` itself.

Closes #15902

(cherry picked from commit 2f41d23)
Service-Card-Id: 90379173
Service-Version: 1.18
@DHowett DHowett moved this from Cherry Picked to Validated in 1.18 Servicing Pipeline Oct 3, 2023
@DHowett DHowett moved this from Validated to Shipped in 1.18 Servicing Pipeline Oct 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Settings Issues related to settings and customizability, for console or terminal Area-User Interface Issues pertaining to the user interface of the Console or Terminal Issue-Bug It either shouldn't be doing this or needs an investigation. Priority-3 A description (P3) Product-Terminal The new Windows Terminal.
Projects
Development

Successfully merging this pull request may close these issues.

Pane movement breaks showCloseButton=never
3 participants