diff --git a/src/modules/fancyzones/lib/WindowMoveHandler.cpp b/src/modules/fancyzones/lib/WindowMoveHandler.cpp index a450ff64b7..a60ace6987 100644 --- a/src/modules/fancyzones/lib/WindowMoveHandler.cpp +++ b/src/modules/fancyzones/lib/WindowMoveHandler.cpp @@ -337,7 +337,7 @@ void WindowMoveHandlerPrivate::MoveSizeEnd(HWND window, POINT const& ptScreen, c { ::RemoveProp(window, RESTORE_SIZE_STAMP); } - else + else if (!IsWindowMaximized(window)) { RestoreWindowSize(window); } diff --git a/src/modules/fancyzones/lib/util.cpp b/src/modules/fancyzones/lib/util.cpp index 1057351f02..eb21a10b87 100644 --- a/src/modules/fancyzones/lib/util.cpp +++ b/src/modules/fancyzones/lib/util.cpp @@ -177,6 +177,17 @@ bool IsInterestingWindow(HWND window, const std::vector& excludedA return true; } +bool IsWindowMaximized(HWND window) noexcept +{ + WINDOWPLACEMENT placement{}; + if (GetWindowPlacement(window, &placement) && + placement.showCmd == SW_SHOWMAXIMIZED) + { + return true; + } + return false; +} + void SaveWindowSizeAndOrigin(HWND window) noexcept { HANDLE handle = GetPropW(window, RESTORE_SIZE_STAMP); diff --git a/src/modules/fancyzones/lib/util.h b/src/modules/fancyzones/lib/util.h index 8397064199..7d35ca33c9 100644 --- a/src/modules/fancyzones/lib/util.h +++ b/src/modules/fancyzones/lib/util.h @@ -121,6 +121,7 @@ void OrderMonitors(std::vector>& monitorInfo); void SizeWindowToRect(HWND window, RECT rect) noexcept; bool IsInterestingWindow(HWND window, const std::vector& excludedApps) noexcept; +bool IsWindowMaximized(HWND window) noexcept; void SaveWindowSizeAndOrigin(HWND window) noexcept; void RestoreWindowSize(HWND window) noexcept; void RestoreWindowOrigin(HWND window) noexcept;