diff --git a/src/modules/fancyzones/lib/FancyZones.cpp b/src/modules/fancyzones/lib/FancyZones.cpp index 883017257f..d1445bee58 100644 --- a/src/modules/fancyzones/lib/FancyZones.cpp +++ b/src/modules/fancyzones/lib/FancyZones.cpp @@ -55,14 +55,6 @@ public: IFACEMETHODIMP_(void) Destroy() noexcept; - // IFancyZonesCallback - IFACEMETHODIMP_(bool) - InMoveSize() noexcept - { - std::shared_lock readLock(m_lock); - return m_windowMoveHandler.InMoveSize(); - } - void MoveSizeStart(HWND window, HMONITOR monitor, POINT const& ptScreen) noexcept { std::unique_lock writeLock(m_lock); @@ -185,6 +177,13 @@ public: return m_settings->GetSettings()->makeDraggedWindowTransparent; } + IFACEMETHODIMP_(bool) + InMoveSize() noexcept + { + std::shared_lock readLock(m_lock); + return m_windowMoveHandler.InMoveSize(); + } + LRESULT WndProc(HWND, UINT, WPARAM, LPARAM) noexcept; void OnDisplayChange(DisplayChangeType changeType) noexcept; void AddZoneWindow(HMONITOR monitor, PCWSTR deviceId) noexcept; diff --git a/src/modules/fancyzones/lib/FancyZones.h b/src/modules/fancyzones/lib/FancyZones.h index 698cd2af8c..26ccb5c32a 100644 --- a/src/modules/fancyzones/lib/FancyZones.h +++ b/src/modules/fancyzones/lib/FancyZones.h @@ -81,9 +81,13 @@ interface __declspec(uuid("{5C8D99D6-34B2-4F4A-A8E5-7483F6869775}")) IZoneWindow */ IFACEMETHOD_(int, GetZoneHighlightOpacity)() = 0; /** - * @returns Bool indicating if dragged window should be transparrent + * @returns Boolean indicating if dragged window should be transparrent. */ IFACEMETHOD_(bool, isMakeDraggedWindowTransparentActive) () = 0; + /** + * @returns Boolean indicating if move/size operation is currently active. + */ + IFACEMETHOD_(bool, InMoveSize) () = 0; }; winrt::com_ptr MakeFancyZones(HINSTANCE hinstance, const winrt::com_ptr& settings) noexcept; diff --git a/src/modules/fancyzones/lib/ZoneWindow.cpp b/src/modules/fancyzones/lib/ZoneWindow.cpp index 060dc6ae86..61a00577c6 100644 --- a/src/modules/fancyzones/lib/ZoneWindow.cpp +++ b/src/modules/fancyzones/lib/ZoneWindow.cpp @@ -522,7 +522,7 @@ ZoneWindow::ShowZoneWindow() noexcept std::thread{ [=]() { AnimateWindow(window, m_showAnimationDuration, AW_BLEND); InvalidateRect(window, nullptr, true); - if (m_windowMoveSize == nullptr) + if (!m_host->InMoveSize()) { HideZoneWindow(); } diff --git a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp index e0f3ccca09..7d845b82c9 100644 --- a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp +++ b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp @@ -47,6 +47,11 @@ namespace FancyZonesUnitTests { return true; } + IFACEMETHODIMP_(bool) + InMoveSize() noexcept + { + return true; + } IZoneWindow* m_zoneWindow; };