Zhiyi Zhang : user32: Introduce a SCROLL_DrawNCScrollBar() to draw scroll bars in non-client area.

Alexandre Julliard julliard at winehq.org
Mon Jul 5 16:24:20 CDT 2021


Module: wine
Branch: master
Commit: 5541cf32c55a43b6acb5a50afb4b10204a73e479
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5541cf32c55a43b6acb5a50afb4b10204a73e479

Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date:   Mon Jul  5 20:32:12 2021 +0800

user32: Introduce a SCROLL_DrawNCScrollBar() to draw scroll bars in non-client area.

Having a SCROLL_DrawNCScrollBar() in scroll.c enables it to access global variables there. So that
global variables access in SCROLL_DrawScrollBar() can be moved outside of it and
SCROLL_DrawScrollBar() can then be refactored into a function without access to global variables.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/controls.h  | 1 +
 dlls/user32/nonclient.c | 6 +-----
 dlls/user32/scroll.c    | 8 ++++++++
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/dlls/user32/controls.h b/dlls/user32/controls.h
index 0b0f1c28015..78b393fcddb 100644
--- a/dlls/user32/controls.h
+++ b/dlls/user32/controls.h
@@ -179,6 +179,7 @@ extern BOOL NC_DrawSysButton( HWND hwnd, HDC hdc, BOOL down ) DECLSPEC_HIDDEN;
 extern void NC_GetSysPopupPos( HWND hwnd, RECT* rect ) DECLSPEC_HIDDEN;
 
 /* scrollbar */
+extern void SCROLL_DrawNCScrollBar( HWND hwnd, HDC hdc, BOOL draw_horizontal, BOOL draw_vertical ) DECLSPEC_HIDDEN;
 extern void SCROLL_DrawScrollBar( HWND hwnd, HDC hdc, INT nBar, BOOL arrows, BOOL interior ) DECLSPEC_HIDDEN;
 extern void SCROLL_TrackScrollBar( HWND hwnd, INT scrollbar, POINT pt ) DECLSPEC_HIDDEN;
 
diff --git a/dlls/user32/nonclient.c b/dlls/user32/nonclient.c
index e56c03deaf0..50ecb0c4e2e 100644
--- a/dlls/user32/nonclient.c
+++ b/dlls/user32/nonclient.c
@@ -1027,11 +1027,7 @@ static void  NC_DoNCPaint( HWND  hwnd, HRGN  clip )
 	DrawEdge (hdc, &rect, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
 
     /* Draw the scroll-bars */
-
-    if (dwStyle & WS_VSCROLL)
-        SCROLL_DrawScrollBar( hwnd, hdc, SB_VERT, TRUE, TRUE );
-    if (dwStyle & WS_HSCROLL)
-        SCROLL_DrawScrollBar( hwnd, hdc, SB_HORZ, TRUE, TRUE );
+    SCROLL_DrawNCScrollBar( hwnd, hdc, dwStyle & WS_HSCROLL, dwStyle & WS_VSCROLL );
 
     /* Draw the "size-box" */
     if ((dwStyle & WS_VSCROLL) && (dwStyle & WS_HSCROLL))
diff --git a/dlls/user32/scroll.c b/dlls/user32/scroll.c
index 9113d57263b..5fc75ca42e7 100644
--- a/dlls/user32/scroll.c
+++ b/dlls/user32/scroll.c
@@ -646,6 +646,14 @@ void SCROLL_DrawScrollBar( HWND hwnd, HDC hdc, INT nBar,
     }
 }
 
+void SCROLL_DrawNCScrollBar( HWND hwnd, HDC hdc, BOOL draw_horizontal, BOOL draw_vertical )
+{
+    if (draw_horizontal)
+        SCROLL_DrawScrollBar( hwnd, hdc, SB_HORZ, TRUE, TRUE );
+    if (draw_vertical)
+        SCROLL_DrawScrollBar( hwnd, hdc, SB_VERT, TRUE, TRUE );
+}
+
 /***********************************************************************
  *           SCROLL_DrawSizeGrip
  *




More information about the wine-cvs mailing list