From 2dac785e1aae5de8b7287df9b541c7e4eff2c8bc Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Sun, 3 Aug 2025 20:19:12 -0500 Subject: [PATCH] TC: actually, we don't want to calculate panel size without padding --- src/cascadia/TerminalControl/ControlCore.cpp | 8 +++++++- src/cascadia/TerminalControl/TermControl.cpp | 8 +++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/cascadia/TerminalControl/ControlCore.cpp b/src/cascadia/TerminalControl/ControlCore.cpp index 4c19962b93..c2af7b5e27 100644 --- a/src/cascadia/TerminalControl/ControlCore.cpp +++ b/src/cascadia/TerminalControl/ControlCore.cpp @@ -1126,6 +1126,12 @@ namespace winrt::Microsoft::Terminal::Control::implementation auto cx = gsl::narrow_cast(lrint(_panelWidth * _compositionScale)); auto cy = gsl::narrow_cast(lrint(_panelHeight * _compositionScale)); + const auto padding = StringToXamlThickness(_settings->Padding()); + auto padx = gsl::narrow_cast(lrint((padding.Left + padding.Right) * _compositionScale)); + auto pady = gsl::narrow_cast(lrint((padding.Top + padding.Bottom) * _compositionScale)); + + cx -= padx; + cy -= pady; // Don't actually resize so small that a single character wouldn't fit // in either dimension. The buffer really doesn't like being size 0. @@ -1139,7 +1145,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation _terminal->ClearSelection(); // Tell the dx engine that our window is now the new size. - THROW_IF_FAILED(_renderEngine->SetWindowSize({ cx, cy })); + THROW_IF_FAILED(_renderEngine->SetWindowSize({ cx + padx, cy + pady })); // Invalidate everything _renderer->TriggerRedrawAll(); diff --git a/src/cascadia/TerminalControl/TermControl.cpp b/src/cascadia/TerminalControl/TermControl.cpp index 2bd812caa0..6126e566e1 100644 --- a/src/cascadia/TerminalControl/TermControl.cpp +++ b/src/cascadia/TerminalControl/TermControl.cpp @@ -1340,8 +1340,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation return false; } - const auto panelWidth = static_cast(SwapChainPanel().ActualWidth() - (_contentPadding.Left + _contentPadding.Right)); - const auto panelHeight = static_cast(SwapChainPanel().ActualHeight() - (_contentPadding.Top + _contentPadding.Bottom)); + const auto panelWidth = static_cast(SwapChainPanel().ActualWidth()); + const auto panelHeight = static_cast(SwapChainPanel().ActualHeight()); const auto panelScaleX = SwapChainPanel().CompositionScaleX(); const auto panelScaleY = SwapChainPanel().CompositionScaleY(); @@ -2478,9 +2478,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation } const auto newSize = e.NewSize(); - _core.SizeChanged( - newSize.Width - static_cast(_contentPadding.Left + _contentPadding.Right), - newSize.Height - static_cast(_contentPadding.Top + _contentPadding.Bottom)); + _core.SizeChanged(newSize.Width, newSize.Height); if (_automationPeer) {