https://git.reactos.org/?p=reactos.git;a=commitdiff;h=1158c241941a13d8374f3f1b3016c672c824e7f0

commit 1158c241941a13d8374f3f1b3016c672c824e7f0
Author:     Joachim Henze <[email protected]>
AuthorDate: Sat Jun 22 22:27:23 2019 +0200
Commit:     Joachim Henze <[email protected]>
CommitDate: Sat Jun 22 22:27:23 2019 +0200

    [WIN32SS] Fix multiple scrollbar redraw issues
    
    This fixes:
    - CORE-15911 "Scrollbars do not dissapear when Maximizing and not needed"
    - CORE-10617 "ListView corrupt scrollbar upon resizing the column-header"
    
    and will appease regression:
    - CORE-15429 "Uninitialized scrollbars in 'My Computer'"
    
    By applying clientFix.patch from CORE-15911 contributed by JIRA-user 
'I_Kill_Bugs'.
    
    https://reactos.org/testman/compare.php?ids=66723,66729
    
    Earlier I already committed this fix into 0.4.12-RC-9-g
    5ac548544ff6b3d52c6591385d9029164e766d71
---
 win32ss/user/ntuser/winpos.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/win32ss/user/ntuser/winpos.c b/win32ss/user/ntuser/winpos.c
index dba7738c3b3..e01c19c1c29 100644
--- a/win32ss/user/ntuser/winpos.c
+++ b/win32ss/user/ntuser/winpos.c
@@ -1832,7 +1832,7 @@ co_WinPosSetWindowPos(
          }
 
          /* Calculate the non client area for resizes, as this is used in the 
copy region */
-         if (!(WinPos.flags & SWP_NOSIZE))
+         if ((WinPos.flags & (SWP_NOSIZE | SWP_FRAMECHANGED)) != SWP_NOSIZE)
          {
              VisBeforeJustClient = VIS_ComputeVisibleRegion(Window, TRUE, 
FALSE,
                  (Window->style & WS_CLIPSIBLINGS) ? TRUE : FALSE);
@@ -1973,12 +1973,16 @@ co_WinPosSetWindowPos(
           */
 
          CopyRgn = IntSysCreateRectpRgn(0, 0, 0, 0);
-         if (WinPos.flags & SWP_NOSIZE)
+         if ((WinPos.flags & SWP_NOSIZE) && (WinPos.flags & SWP_NOCLIENTSIZE))
             RgnType = IntGdiCombineRgn(CopyRgn, VisAfter, VisBefore, RGN_AND);
          else if (VisBeforeJustClient != NULL)
          {
             RgnType = IntGdiCombineRgn(CopyRgn, VisAfter, VisBeforeJustClient, 
RGN_AND);
-            REGION_Delete(VisBeforeJustClient);
+         }
+
+         if (VisBeforeJustClient != NULL)
+         {
+             REGION_Delete(VisBeforeJustClient);
          }
 
          /* Now use in copying bits which are in the update region. */

Reply via email to