diff --git a/src/cascadia/TerminalApp/AppCommandlineArgs.cpp b/src/cascadia/TerminalApp/AppCommandlineArgs.cpp index d9ac41dc2..a2da96205 100644 --- a/src/cascadia/TerminalApp/AppCommandlineArgs.cpp +++ b/src/cascadia/TerminalApp/AppCommandlineArgs.cpp @@ -380,6 +380,11 @@ void AppCommandlineArgs::_buildFocusTabParser() else if (_focusNextTab || _focusPrevTab) { focusTabAction.Action(_focusNextTab ? ShortcutAction::NextTab : ShortcutAction::PrevTab); + // GH#10070 - make sure to not use the MRU order when switching + // tabs on the commandline. That wouldn't make any sense! + focusTabAction.Args(_focusNextTab ? + static_cast(NextTabArgs(TabSwitcherMode::Disabled)) : + static_cast(PrevTabArgs(TabSwitcherMode::Disabled))); _startupActions.push_back(std::move(focusTabAction)); } }); diff --git a/src/cascadia/TerminalSettingsModel/ActionArgs.h b/src/cascadia/TerminalSettingsModel/ActionArgs.h index 1d67ef809..ebf35a1aa 100644 --- a/src/cascadia/TerminalSettingsModel/ActionArgs.h +++ b/src/cascadia/TerminalSettingsModel/ActionArgs.h @@ -1475,6 +1475,8 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation struct PrevTabArgs : public PrevTabArgsT { PrevTabArgs() = default; + PrevTabArgs(TabSwitcherMode switcherMode) : + _SwitcherMode(switcherMode) {} ACTION_ARG(Windows::Foundation::IReference, SwitcherMode, nullptr); static constexpr std::string_view SwitcherModeKey{ "tabSwitcherMode" }; @@ -1523,6 +1525,8 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation struct NextTabArgs : public NextTabArgsT { NextTabArgs() = default; + NextTabArgs(TabSwitcherMode switcherMode) : + _SwitcherMode(switcherMode) {} ACTION_ARG(Windows::Foundation::IReference, SwitcherMode, nullptr); static constexpr std::string_view SwitcherModeKey{ "tabSwitcherMode" }; @@ -1772,4 +1776,6 @@ namespace winrt::Microsoft::Terminal::Settings::Model::factory_implementation BASIC_FACTORY(FindMatchArgs); BASIC_FACTORY(NewWindowArgs); BASIC_FACTORY(FocusPaneArgs); + BASIC_FACTORY(PrevTabArgs); + BASIC_FACTORY(NextTabArgs); } diff --git a/src/cascadia/TerminalSettingsModel/ActionArgs.idl b/src/cascadia/TerminalSettingsModel/ActionArgs.idl index ce08759f3..2369a8135 100644 --- a/src/cascadia/TerminalSettingsModel/ActionArgs.idl +++ b/src/cascadia/TerminalSettingsModel/ActionArgs.idl @@ -276,11 +276,15 @@ namespace Microsoft.Terminal.Settings.Model [default_interface] runtimeclass PrevTabArgs : IActionArgs { + PrevTabArgs(); + PrevTabArgs(TabSwitcherMode SwitcherMode); Windows.Foundation.IReference SwitcherMode; }; [default_interface] runtimeclass NextTabArgs : IActionArgs { + NextTabArgs(); + NextTabArgs(TabSwitcherMode SwitcherMode); Windows.Foundation.IReference SwitcherMode; };