Module: wine Branch: master Commit: 09f43e0491fc3ca3286f779fc415c64cc9aae143 URL: https://source.winehq.org/git/wine.git/?a=commit;h=09f43e0491fc3ca3286f779fc...
Author: Zhiyi Zhang zzhang@codeweavers.com Date: Tue Jul 6 15:07:55 2021 +0800
user32: Separate scroll bar window checks from actual drawing.
Signed-off-by: Zhiyi Zhang zzhang@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/scroll.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/dlls/user32/scroll.c b/dlls/user32/scroll.c index 6e9f899496f..d7a4f412785 100644 --- a/dlls/user32/scroll.c +++ b/dlls/user32/scroll.c @@ -562,15 +562,10 @@ static void SCROLL_DoDrawScrollBar( HWND hwnd, HDC hdc, INT nBar, enum SCROLL_HI BOOL interior, RECT *rect, INT arrowSize, INT thumbPos, INT thumbSize, BOOL vertical ) { - SCROLLBAR_INFO *infoPtr = SCROLL_GetInternalInfo( hwnd, nBar, TRUE ); - DWORD style = GetWindowLongW( hwnd, GWL_STYLE ); - - if (!(hwnd = WIN_GetFullHandle( hwnd ))) return; + SCROLLBAR_INFO *infoPtr;
- if (!infoPtr || - ((nBar == SB_VERT) && !(style & WS_VSCROLL)) || - ((nBar == SB_HORZ) && !(style & WS_HSCROLL))) return; - if (!WIN_IsWindowDrawable( hwnd, FALSE )) return; + if (!(infoPtr = SCROLL_GetInternalInfo( hwnd, nBar, TRUE ))) + return;
/* Draw the arrows */
@@ -625,8 +620,19 @@ void SCROLL_DrawScrollBar( HWND hwnd, HDC hdc, INT bar, enum SCROLL_HITTEST hit_ { INT arrow_size, thumb_size, thumb_pos; BOOL vertical; + DWORD style; RECT rect;
+ if (!(hwnd = WIN_GetFullHandle( hwnd ))) + return; + + style = GetWindowLongW( hwnd, GWL_STYLE ); + if ((bar == SB_VERT && !(style & WS_VSCROLL)) || (bar == SB_HORZ && !(style & WS_HSCROLL))) + return; + + if (!WIN_IsWindowDrawable( hwnd, FALSE )) + return; + SCROLL_GetScrollBarDrawInfo( hwnd, bar, tracking_info, &rect, &arrow_size, &thumb_size, &thumb_pos, &vertical ); /* do not draw if the scrollbar rectangle is empty */