Fix acrylic brush flash/fade on new tab creation. (#1092)

Fixes #1082 -- #853's fix of the acrylic background's flash/fade on any settings change managed to cause a flash/fade on new tab creation. This change removed both flash/fades. #853 split background brush initialization from background color changes; due to the brush being constructed with a default color and then the color being initialized later, new tabs were getting the flash/fade that accompanies a re-focused fluent-style acrylic background. This PR initializes the acrylic color at brush initialization to avoid the problem.
This commit is contained in:
d-bingham 2019-06-04 15:25:24 -05:00 committed by Michael Niksa
parent e6e316977d
commit 5d96ebc225

View File

@ -202,8 +202,8 @@ namespace winrt::Microsoft::Terminal::TerminalControl::implementation
// enabled and no background image is present. // enabled and no background image is present.
// - Avoids image flickering and acrylic brush redraw if settings are changed // - Avoids image flickering and acrylic brush redraw if settings are changed
// but the appropriate brush is still in place. // but the appropriate brush is still in place.
// - Does not apply background color; _BackgroundColorChanged must be called // - Does not apply background color outside of acrylic mode;
// to do so. // _BackgroundColorChanged must be called to do so.
// Arguments: // Arguments:
// - <none> // - <none>
// Return Value: // Return Value:
@ -223,6 +223,18 @@ namespace winrt::Microsoft::Terminal::TerminalControl::implementation
acrylic.BackgroundSource(Media::AcrylicBackgroundSource::HostBackdrop); acrylic.BackgroundSource(Media::AcrylicBackgroundSource::HostBackdrop);
} }
// see GH#1082: Initialize background color so we don't get a
// fade/flash when _BackgroundColorChanged is called
uint32_t color = _settings.DefaultBackground();
winrt::Windows::UI::Color bgColor{};
bgColor.R = GetRValue(color);
bgColor.G = GetGValue(color);
bgColor.B = GetBValue(color);
bgColor.A = 255;
acrylic.FallbackColor(bgColor);
acrylic.TintColor(bgColor);
// Apply brush settings // Apply brush settings
acrylic.TintOpacity(_settings.TintOpacity()); acrylic.TintOpacity(_settings.TintOpacity());