mirror of
https://github.com/microsoft/terminal.git
synced 2026-07-08 17:46:05 +00:00
Keep the font size delta across settings reloads (#20230)
This is a trivial fix for an issue we get a somewhat outsized number of
complaints about.
When the user has adjusted the font size in any direction, we'll just
keep track of the magnitude and apply it every time the settings change.
Yes, this means that if you zoom once and then change your real font
size it's going to zoom even more.
That probably doesn't matter.
Refs #11522
(cherry picked from commit 8fe6c21ef8)
Service-Card-Id: PVTI_lADOAF3p4s4BBcTlzgsyOyE
Service-Version: 1.24
This commit is contained in:
committed by
Dustin L. Howett
parent
b4e69c6862
commit
081c7f8f5e
@@ -915,7 +915,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// Manually turn off acrylic if they turn off transparency.
|
||||
_runtimeUseAcrylic = _settings->Opacity() < 1.0 && _settings->UseAcrylic();
|
||||
|
||||
const auto sizeChanged = _setFontSizeUnderLock(_settings->FontSize());
|
||||
const auto sizeChanged = _setFontSizeUnderLock(_settings->FontSize() + _accumulatedFontSizeDelta);
|
||||
|
||||
// Update the terminal core with its new Core settings
|
||||
_terminal->UpdateSettings(*_settings);
|
||||
@@ -1105,11 +1105,10 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// - none
|
||||
void ControlCore::ResetFontSize()
|
||||
{
|
||||
const auto lock = _terminal->LockForWriting();
|
||||
|
||||
if (_setFontSizeUnderLock(_settings->FontSize()))
|
||||
if (std::exchange(_accumulatedFontSizeDelta, 0.f) != 0.f)
|
||||
{
|
||||
_refreshSizeUnderLock();
|
||||
// No point in doing this if there was no delta.
|
||||
AdjustFontSize(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1119,9 +1118,11 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// - fontSizeDelta: The amount to increase or decrease the font size by.
|
||||
void ControlCore::AdjustFontSize(float fontSizeDelta)
|
||||
{
|
||||
_accumulatedFontSizeDelta += fontSizeDelta;
|
||||
|
||||
const auto lock = _terminal->LockForWriting();
|
||||
|
||||
if (_setFontSizeUnderLock(_desiredFont.GetFontSize() + fontSizeDelta))
|
||||
if (_setFontSizeUnderLock(_settings->FontSize() + _accumulatedFontSizeDelta))
|
||||
{
|
||||
_refreshSizeUnderLock();
|
||||
}
|
||||
|
||||
@@ -396,6 +396,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
bool _colorGlyphs = true;
|
||||
CSSLengthPercentage _cellWidth;
|
||||
CSSLengthPercentage _cellHeight;
|
||||
float _accumulatedFontSizeDelta = 0.f; // Preserved across reloads to prevent user zoom from being overwritten.
|
||||
|
||||
// Rendering stuff.
|
||||
winrt::handle _lastSwapChainHandle{ nullptr };
|
||||
|
||||
Reference in New Issue
Block a user