[MSPAINT] Don't copy bits on resizing (#5716)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Thu, 21 Sep 2023 22:35:03 +0000 (07:35 +0900)
committerGitHub <noreply@github.com>
Thu, 21 Sep 2023 22:35:03 +0000 (07:35 +0900)
- Fix the graphical glitches on resizing and moving toolbars.
- Add SWP_NOCOPYBITS flag on positioning controls on resizing of main window.
CORE-19137

base/applications/mspaint/winproc.cpp

index 8a6e259..8f9e0ca 100644 (file)
@@ -77,6 +77,7 @@ void CMainWindow::alignChildrenToMainWindow()
     RECT clientRect, rc;
     GetClientRect(&clientRect);
     RECT rcSpace = clientRect;
+    const UINT uFlags = (SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION | SWP_NOCOPYBITS);
 
     if (::IsWindowVisible(g_hStatusBar))
     {
@@ -93,7 +94,7 @@ void CMainWindow::alignChildrenToMainWindow()
             hDWP = ::DeferWindowPos(hDWP, toolBoxContainer, NULL,
                                     rcSpace.right - CX_TOOLBAR, rcSpace.top,
                                     CX_TOOLBAR, rcSpace.bottom - rcSpace.top,
-                                    SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
+                                    uFlags);
             rcSpace.right -= CX_TOOLBAR;
         }
         else
@@ -101,7 +102,7 @@ void CMainWindow::alignChildrenToMainWindow()
             hDWP = ::DeferWindowPos(hDWP, toolBoxContainer, NULL,
                                     rcSpace.left, rcSpace.top,
                                     CX_TOOLBAR, rcSpace.bottom - rcSpace.top,
-                                    SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
+                                    uFlags);
             rcSpace.left += CX_TOOLBAR;
         }
     }
@@ -113,7 +114,7 @@ void CMainWindow::alignChildrenToMainWindow()
             hDWP = ::DeferWindowPos(hDWP, paletteWindow, NULL,
                                     rcSpace.left, rcSpace.bottom - CY_PALETTE,
                                     rcSpace.right - rcSpace.left, CY_PALETTE,
-                                    SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
+                                    uFlags);
             rcSpace.bottom -= CY_PALETTE;
         }
         else
@@ -121,7 +122,7 @@ void CMainWindow::alignChildrenToMainWindow()
             hDWP = ::DeferWindowPos(hDWP, paletteWindow, NULL,
                                     rcSpace.left, rcSpace.top,
                                     rcSpace.right - rcSpace.left, CY_PALETTE,
-                                    SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
+                                    uFlags);
             rcSpace.top += CY_PALETTE;
         }
     }
@@ -131,7 +132,7 @@ void CMainWindow::alignChildrenToMainWindow()
         hDWP = ::DeferWindowPos(hDWP, canvasWindow, NULL,
                                 rcSpace.left, rcSpace.top,
                                 rcSpace.right - rcSpace.left, rcSpace.bottom - rcSpace.top,
-                                SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
+                                uFlags);
     }
 
     ::EndDeferWindowPos(hDWP);