From 30b22ace0b67f72e2ab913fccf56842b863effad Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 16 Jan 2024 21:11:05 +0400 Subject: [PATCH] Use new cloaking workaround for non-fullscreen only. --- ui/platform/win/ui_window_win.cpp | 16 ++++++++++------ ui/platform/win/ui_window_win.h | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ui/platform/win/ui_window_win.cpp b/ui/platform/win/ui_window_win.cpp index 5f76de4..4ac4d77 100644 --- a/ui/platform/win/ui_window_win.cpp +++ b/ui/platform/win/ui_window_win.cpp @@ -367,6 +367,7 @@ void WindowHelper::showFullScreen() { _isFullScreen = true; updateMargins(); updateCornersRounding(); + updateCloaking(); } window()->showFullScreen(); } @@ -377,6 +378,7 @@ void WindowHelper::showNormal() { _isFullScreen = false; updateMargins(); updateCornersRounding(); + updateCloaking(); } } @@ -497,11 +499,7 @@ void WindowHelper::init() { window()->shownValue() | rpl::filter([=](bool shown) { return !shown; }) | rpl::start_with_next([=] { - const auto toggleCloak = [=](bool enabled) { - const auto flag = BOOL(enabled ? TRUE : FALSE); - DwmSetWindowAttribute(_handle, DWMWA_CLOAK, &flag, sizeof(flag)); - }; - toggleCloak(true); + updateCloaking(); const auto qwindow = window()->windowHandle(); const auto firstPaintEventFilter = std::make_shared(); @@ -511,7 +509,7 @@ void WindowHelper::init() { if (e->type() == QEvent::Expose && qwindow->isExposed()) { InvokeQueued(qwindow, [=] { InvokeQueued(qwindow, [=] { - toggleCloak(false); + updateCloaking(); }); }); delete base::take(*firstPaintEventFilter); @@ -910,6 +908,12 @@ void WindowHelper::updateWindowFrameColors(bool active) { sizeof(COLORREF)); } +void WindowHelper::updateCloaking() { + const auto enabled = window()->isHidden() && !_isFullScreen; + const auto flag = BOOL(enabled ? TRUE : FALSE); + DwmSetWindowAttribute(_handle, DWMWA_CLOAK, &flag, sizeof(flag)); +} + void WindowHelper::updateMargins() { if (_updatingMargins) return; diff --git a/ui/platform/win/ui_window_win.h b/ui/platform/win/ui_window_win.h index 58b723e..8b9fe15 100644 --- a/ui/platform/win/ui_window_win.h +++ b/ui/platform/win/ui_window_win.h @@ -52,6 +52,7 @@ private: void init(); void updateMargins(); + void updateCloaking(); void updateWindowFrameColors(); void updateWindowFrameColors(bool active); void initialShadowUpdate();