From 3cf4e75eea4be48e5b79183a9a1cd3bd1c8193fc Mon Sep 17 00:00:00 2001 From: Marco Pelagatti <1140981+mpela81@users.noreply.github.com> Date: Mon, 24 Jul 2023 19:26:25 +0200 Subject: [PATCH] Refactor isConnectionClose --- src/cascadia/TerminalApp/Pane.cpp | 10 +++++----- src/cascadia/TerminalApp/Pane.h | 2 +- src/cascadia/TerminalApp/TerminalPage.cpp | 7 +++++-- src/cascadia/TerminalApp/TerminalTab.cpp | 7 ++++--- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/cascadia/TerminalApp/Pane.cpp b/src/cascadia/TerminalApp/Pane.cpp index a11fb700f631..88a5f602d3b3 100644 --- a/src/cascadia/TerminalApp/Pane.cpp +++ b/src/cascadia/TerminalApp/Pane.cpp @@ -1381,15 +1381,15 @@ Profile Pane::GetFocusedProfile() } // Method Description: -// - Gets the connection state of this pane. If this Pane is not a leaf this will -// return NotConnected. +// - Returns true if the connection state of this pane is closed. If this Pane is not a leaf this will +// return false. // Arguments: // - // Return Value: -// - The connection state of this Pane. -winrt::Microsoft::Terminal::TerminalConnection::ConnectionState Pane::GetConnectionState() const +// - true if the connection state of this Pane is closed. +bool Pane::IsConnectionClosed() const { - return _connectionState; + return _connectionState >= ConnectionState::Closed; } // Method Description: diff --git a/src/cascadia/TerminalApp/Pane.h b/src/cascadia/TerminalApp/Pane.h index 4519ab750161..0b356f826bda 100644 --- a/src/cascadia/TerminalApp/Pane.h +++ b/src/cascadia/TerminalApp/Pane.h @@ -74,7 +74,7 @@ class Pane : public std::enable_shared_from_this winrt::Microsoft::Terminal::Control::TermControl GetLastFocusedTerminalControl(); winrt::Microsoft::Terminal::Control::TermControl GetTerminalControl(); winrt::Microsoft::Terminal::Settings::Model::Profile GetFocusedProfile(); - winrt::Microsoft::Terminal::TerminalConnection::ConnectionState GetConnectionState() const; + bool IsConnectionClosed() const; // Method Description: // - If this is a leaf pane, return its profile. diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp index 51ac73eeb818..10118aab79a1 100644 --- a/src/cascadia/TerminalApp/TerminalPage.cpp +++ b/src/cascadia/TerminalApp/TerminalPage.cpp @@ -4648,9 +4648,12 @@ namespace winrt::TerminalApp::implementation makeItem(RS_(L"PaneClose"), L"\xE89F", ActionAndArgs{ ShortcutAction::ClosePane, nullptr }); } - if (const auto& control{ _GetActiveControl() }; control.ConnectionState() >= ConnectionState::Closed) + if (const auto pane{ _GetFocusedTabImpl()->GetActivePane() }) { - makeItem(RS_(L"RestartConnectionText"), L"\xE72C", ActionAndArgs{ ShortcutAction::RestartConnection, nullptr }); + if (pane->IsConnectionClosed()) + { + makeItem(RS_(L"RestartConnectionText"), L"\xE72C", ActionAndArgs{ ShortcutAction::RestartConnection, nullptr }); + } } if (withSelection) diff --git a/src/cascadia/TerminalApp/TerminalTab.cpp b/src/cascadia/TerminalApp/TerminalTab.cpp index 30e1e6fbc113..d0122e83d6d6 100644 --- a/src/cascadia/TerminalApp/TerminalTab.cpp +++ b/src/cascadia/TerminalApp/TerminalTab.cpp @@ -1067,7 +1067,7 @@ namespace winrt::TerminalApp::implementation if (_rootPane) { const bool isClosed = _rootPane->WalkTree([&](const auto& p) { - return p->GetConnectionState() >= ConnectionState::Closed; + return p->IsConnectionClosed(); }); _tabStatus.IsConnectionClosed(isClosed); @@ -1075,8 +1075,9 @@ namespace winrt::TerminalApp::implementation if (_activePane) { - const bool isClosed = _activePane->GetConnectionState() >= ConnectionState::Closed; - _restartConnectionMenuItem.Visibility(isClosed ? WUX::Visibility::Visible : WUX::Visibility::Collapsed); + _restartConnectionMenuItem.Visibility(_activePane->IsConnectionClosed() ? + WUX::Visibility::Visible : + WUX::Visibility::Collapsed); } }