From 29e2c982d49a78ecfa37595c115b18dcc9ba2579 Mon Sep 17 00:00:00 2001 From: vldmr11080 <57061786+vldmr11080@users.noreply.github.com> Date: Mon, 20 Jul 2020 11:55:19 +0200 Subject: [PATCH] Handle desktop switch and open on active monitor functionality (#5065) --- .../Strings/en-us/Resources.resw | 2 +- src/modules/fancyzones/lib/FancyZones.cpp | 7 +++++++ src/modules/fancyzones/lib/fancyzones.rc | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw b/src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw index 4c4bb4f4f..3d3e242ad 100644 --- a/src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw +++ b/src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw @@ -334,7 +334,7 @@ Move newly created windows to their last known zone - Move newly created windows to the current active monitor + Move newly created windows to the current active monitor [EXPERIMENTAL] Follow mouse cursor instead of focus when launching editor in a multi screen environment diff --git a/src/modules/fancyzones/lib/FancyZones.cpp b/src/modules/fancyzones/lib/FancyZones.cpp index 5c90b6516..b25ffe804 100644 --- a/src/modules/fancyzones/lib/FancyZones.cpp +++ b/src/modules/fancyzones/lib/FancyZones.cpp @@ -499,6 +499,13 @@ IFACEMETHODIMP_(void) FancyZones::WindowCreated(HWND window) noexcept { std::shared_lock readLock(m_lock); + GUID desktopId{}; + if (VirtualDesktopUtils::GetWindowDesktopId(window, &desktopId) && desktopId != m_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. + return; + } const bool moveToAppLastZone = m_settings->GetSettings()->appLastZone_moveWindows; const bool openOnActiveMonitor = m_settings->GetSettings()->openWindowOnActiveMonitor; if ((moveToAppLastZone || openOnActiveMonitor) && ShouldProcessNewWindow(window)) diff --git a/src/modules/fancyzones/lib/fancyzones.rc b/src/modules/fancyzones/lib/fancyzones.rc index ddbe6097a..dc144ca5c 100644 --- a/src/modules/fancyzones/lib/fancyzones.rc +++ b/src/modules/fancyzones/lib/fancyzones.rc @@ -19,7 +19,7 @@ BEGIN IDS_SETTING_DESCRIPTION_ZONEHIGHLIGHTCOLOR "Zone highlight color (Default #008CFF)" IDS_SETTING_DESCRIPTION_USE_CURSORPOS_EDITOR_STARTUPSCREEN "Follow mouse cursor instead of focus when launching editor in a multi screen environment" IDS_SETTING_DESCRIPTION_APPLASTZONE_MOVEWINDOWS "Move newly created windows to their last known zone" - IDS_SETTING_DESCRIPTION_OPEN_WINDOW_ON_ACTIVE_MONITOR "Move newly created windows to the current active monitor" + IDS_SETTING_DESCRIPTION_OPEN_WINDOW_ON_ACTIVE_MONITOR "Move newly created windows to the current active monitor [EXPERIMENTAL]" IDS_SETTING_DESCRIPTION_RESTORESIZE "Restore the original size of windows when unsnapping" IDS_SETTING_LAUNCH_EDITOR_LABEL "Zone configuration" IDS_SETTING_LAUNCH_EDITOR_BUTTON "Edit zones"