diff --git a/src/modules/fancyzones/FancyZonesLib/FancyZonesWindowProcessing.h b/src/modules/fancyzones/FancyZonesLib/FancyZonesWindowProcessing.h index 213c5c28d7..fc2108ffbb 100644 --- a/src/modules/fancyzones/FancyZonesLib/FancyZonesWindowProcessing.h +++ b/src/modules/fancyzones/FancyZonesLib/FancyZonesWindowProcessing.h @@ -19,18 +19,17 @@ namespace FancyZonesWindowProcessing return false; } - // Switch between virtual desktops results with posting same windows messages that also indicate - // creation of new window. We need to check if window being processed is on currently active desktop. // For windows that FancyZones shouldn't process (start menu, tray, popup menus) // VirtualDesktopManager is unable to retrieve virtual desktop id and returns an error. auto desktopId = VirtualDesktop::instance().GetDesktopId(window); - auto currentDesktopId = VirtualDesktop::instance().GetCurrentVirtualDesktopId(); if (!desktopId.has_value()) { return false; } - if (currentDesktopId != GUID_NULL && desktopId.value() != currentDesktopId) + // Switch between virtual desktops results with posting same windows messages that also indicate + // creation of new window. We need to check if window being processed is on currently active desktop. + if (!VirtualDesktop::instance().IsWindowOnCurrentDesktop(window)) { return false; } diff --git a/src/modules/fancyzones/FancyZonesLib/VirtualDesktop.cpp b/src/modules/fancyzones/FancyZonesLib/VirtualDesktop.cpp index 69a681a550..7c224a5044 100644 --- a/src/modules/fancyzones/FancyZonesLib/VirtualDesktop.cpp +++ b/src/modules/fancyzones/FancyZonesLib/VirtualDesktop.cpp @@ -190,8 +190,13 @@ bool VirtualDesktop::IsVirtualDesktopIdSavedInRegistry(GUID id) const bool VirtualDesktop::IsWindowOnCurrentDesktop(HWND window) const { - std::optional id = GetDesktopId(window); - return id.has_value(); + BOOL isWindowOnCurrentDesktop = false; + if (m_vdManager) + { + m_vdManager->IsWindowOnCurrentVirtualDesktop(window, &isWindowOnCurrentDesktop); + } + + return isWindowOnCurrentDesktop; } std::optional VirtualDesktop::GetDesktopId(HWND window) const