Skip to content

Commit

Permalink
Add Restart Connection to tab context menu
Browse files Browse the repository at this point in the history
  • Loading branch information
mpela81 committed Jul 15, 2023
1 parent b6477b7 commit 3d23b1a
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 3 deletions.
3 changes: 3 additions & 0 deletions src/cascadia/TerminalApp/Resources/en-US/Resources.resw
Original file line number Diff line number Diff line change
Expand Up @@ -839,4 +839,7 @@
<data name="RestartConnectionText" xml:space="preserve">
<value>Restart Connection</value>
</data>
<data name="RestartConnectionToolTip" xml:space="preserve">
<value>Restart the active pane connection</value>
</data>
</root>
39 changes: 38 additions & 1 deletion src/cascadia/TerminalApp/TerminalTab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ namespace winrt::TerminalApp::implementation
_activePane = nullptr;

_closePaneMenuItem.Visibility(WUX::Visibility::Collapsed);
_restartConnectionMenuItem.Visibility(WUX::Visibility::Collapsed);

auto firstId = _nextPaneId;

Expand Down Expand Up @@ -1053,7 +1054,8 @@ namespace winrt::TerminalApp::implementation
}

// Method Description:
// - Set an indicator on the tab if any pane is in a closed connection state
// - Set an indicator on the tab if any pane is in a closed connection state.
// - Show/hide the Restart Connection context menu entry depending on active pane's state.
// Arguments:
// - <none>
// Return Value:
Expand All @@ -1070,6 +1072,18 @@ namespace winrt::TerminalApp::implementation

_tabStatus.IsConnectionClosed(isClosed);
}

if (_activePane)
{
const bool isClosed = _activePane->GetConnectionState() >= ConnectionState::Closed;
_restartConnectionMenuItem.Visibility(isClosed ? WUX::Visibility::Visible : WUX::Visibility::Collapsed);
}
}

void TerminalTab::_RestartActivePaneConnection()
{
ActionAndArgs restartConnection{ ShortcutAction::RestartConnection, nullptr };
_dispatch.DoAction(restartConnection);
}

// Method Description:
Expand Down Expand Up @@ -1450,6 +1464,28 @@ namespace winrt::TerminalApp::implementation
Automation::AutomationProperties::SetHelpText(findMenuItem, findToolTip);
}

Controls::MenuFlyoutItem restartConnectionMenuItem = _restartConnectionMenuItem;
{
// "Restart Connection"
Controls::FontIcon restartConnectionSymbol;
restartConnectionSymbol.FontFamily(Media::FontFamily{ L"Segoe Fluent Icons, Segoe MDL2 Assets" });
restartConnectionSymbol.Glyph(L"\xE72C");

restartConnectionMenuItem.Click([weakThis](auto&&, auto&&) {
if (auto tab{ weakThis.get() })
{
tab->_RestartActivePaneConnection();
}
});
restartConnectionMenuItem.Text(RS_(L"RestartConnectionText"));
restartConnectionMenuItem.Icon(restartConnectionSymbol);

const auto restartConnectionToolTip = RS_(L"RestartConnectionToolTip");

WUX::Controls::ToolTipService::SetToolTip(restartConnectionMenuItem, box_value(restartConnectionToolTip));
Automation::AutomationProperties::SetHelpText(restartConnectionMenuItem, restartConnectionToolTip);
}

// Build the menu
Controls::MenuFlyout contextMenuFlyout;
Controls::MenuFlyoutSeparator menuSeparator;
Expand All @@ -1460,6 +1496,7 @@ namespace winrt::TerminalApp::implementation
contextMenuFlyout.Items().Append(moveTabToNewWindowMenuItem);
contextMenuFlyout.Items().Append(exportTabMenuItem);
contextMenuFlyout.Items().Append(findMenuItem);
contextMenuFlyout.Items().Append(restartConnectionMenuItem);
contextMenuFlyout.Items().Append(menuSeparator);

// GH#5750 - When the context menu is dismissed with ESC, toss the focus
Expand Down
4 changes: 2 additions & 2 deletions src/cascadia/TerminalApp/TerminalTab.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ namespace winrt::TerminalApp::implementation
std::shared_ptr<Pane> _zoomedPane{ nullptr };

Windows::UI::Xaml::Controls::MenuFlyoutItem _closePaneMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem _restartConnectionMenuItem;

winrt::hstring _lastIconPath{};
std::optional<winrt::Windows::UI::Color> _runtimeTabColor{};
Expand Down Expand Up @@ -150,8 +151,6 @@ namespace winrt::TerminalApp::implementation
bool _inRename{ false };
winrt::Windows::UI::Xaml::Controls::TextBox::LayoutUpdated_revoker _tabRenameBoxLayoutUpdatedRevoker;

winrt::TerminalApp::ShortcutActionDispatch _dispatch;

void _Setup();

std::optional<Windows::UI::Xaml::DispatcherTimer> _bellIndicatorTimer;
Expand All @@ -177,6 +176,7 @@ namespace winrt::TerminalApp::implementation
void _UpdateProgressState();

void _UpdateConnectionClosedState();
void _RestartActivePaneConnection();

void _DuplicateTab();

Expand Down

0 comments on commit 3d23b1a

Please sign in to comment.