From 6c4129d02ab30232ddb4aa09e1dccb6395cb8e3f Mon Sep 17 00:00:00 2001 From: vldmr11080 <57061786+vldmr11080@users.noreply.github.com> Date: Thu, 6 Aug 2020 15:12:49 +0200 Subject: [PATCH] [FancyZones] Do not restore maximized windows (#5597) * Do not restore maximized windows * Fix show command comparison * Move maximized check outside of RestoreWindowSize function --- src/modules/fancyzones/lib/WindowMoveHandler.cpp | 2 +- src/modules/fancyzones/lib/util.cpp | 11 +++++++++++ src/modules/fancyzones/lib/util.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) 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;