diff --git a/src/modules/fancyzones/lib/Zone.cpp b/src/modules/fancyzones/lib/Zone.cpp index 7027993c0d..cbb2fc00a3 100644 --- a/src/modules/fancyzones/lib/Zone.cpp +++ b/src/modules/fancyzones/lib/Zone.cpp @@ -1,6 +1,5 @@ #include "pch.h" - struct Zone : winrt::implements { public: @@ -75,6 +74,12 @@ void Zone::SizeWindowToZone(HWND window, HWND zoneWindow) noexcept // Map to screen coords MapWindowRect(zoneWindow, nullptr, &zoneRect); + MONITORINFO mi{sizeof(mi)}; + if (GetMonitorInfoW(MonitorFromWindow(zoneWindow, MONITOR_DEFAULTTONEAREST), &mi)) + { + OffsetRect(&zoneRect, mi.rcMonitor.left - mi.rcWork.left, mi.rcMonitor.top - mi.rcWork.top); + } + WINDOWPLACEMENT placement; ::GetWindowPlacement(window, &placement); placement.rcNormalPosition = zoneRect; diff --git a/src/modules/fancyzones/lib/ZoneSet.cpp b/src/modules/fancyzones/lib/ZoneSet.cpp index 99388b73dd..b5e806ecd4 100644 --- a/src/modules/fancyzones/lib/ZoneSet.cpp +++ b/src/modules/fancyzones/lib/ZoneSet.cpp @@ -270,10 +270,6 @@ IFACEMETHODIMP_(void) ZoneSet::MoveSizeEnd(HWND window, HWND zoneWindow, POINT p if (auto zone = ZoneFromPoint(ptClient)) { zone->AddWindowToZone(window, zoneWindow, true); - - POINT pointAdjustedScreen = ptClient; - MapWindowPoints(zoneWindow, nullptr, &pointAdjustedScreen, 1); - SetCursorPos(pointAdjustedScreen.x, pointAdjustedScreen.y); } }