From: Mark Jansen Date: Sun, 21 Oct 2018 17:09:09 +0000 (+0200) Subject: [WIN32SS] Disable scrollbars when SIF_DISABLENOSCROLL is used X-Git-Tag: 0.4.12-dev~362 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=929a2c6637b18cc14e259fe2f2d3d9635a10b2e9;hp=824e5dba51aca08204045e440be9c253a8469ac2 [WIN32SS] Disable scrollbars when SIF_DISABLENOSCROLL is used CORE-13918 --- diff --git a/win32ss/user/ntuser/scrollbar.c b/win32ss/user/ntuser/scrollbar.c index a8f7c66dd50..582a603c1fb 100644 --- a/win32ss/user/ntuser/scrollbar.c +++ b/win32ss/user/ntuser/scrollbar.c @@ -58,6 +58,10 @@ DBG_DEFAULT_CHANNEL(UserScrollbar); /* FUNCTIONS *****************************************************************/ +BOOL APIENTRY +IntEnableScrollBar(BOOL Horz, PSCROLLBARINFO Info, UINT wArrows); + + /* Ported from WINE20020904 */ /* Compute the scroll bar rectangle, in drawing coordinates (i.e. client coords for SB_CTL, window coords for SB_VERT and * SB_HORZ). 'arrowSize' returns the width or height of an arrow (depending on * the orientation of the scrollbar), @@ -203,6 +207,14 @@ IntCalculateThumb(PWND Wnd, LONG idObject, PSCROLLBARINFO psbi, PSBDATA pSBData) psbi->xyThumbBottom = 0; ThumbPos = Thumb; } + else if (psbi->rgstate[SBRG_TOPRIGHTBTN] == STATE_SYSTEM_UNAVAILABLE && + psbi->rgstate[SBRG_BOTTOMLEFTBTN] == STATE_SYSTEM_UNAVAILABLE && + pSBData->posMin >= (int)(pSBData->posMax - max(pSBData->page - 1, 0))) + { + /* Nothing to scroll */ + psbi->xyThumbTop = 0; + psbi->xyThumbBottom = 0; + } else { ThumbBox = pSBData->page ? MINTRACKTHUMB : UserGetSystemMetrics(SM_CXHTHUMB); @@ -642,6 +654,12 @@ co_IntSetScrollInfo(PWND Window, INT nBar, LPCSCROLLINFO lpsi, BOOL bRedraw) co_UserRedrawWindow(Window, &UpdateRect, 0, RDW_INVALIDATE | RDW_FRAME); } */ } + + if (bChangeParams && (nBar == SB_HORZ || nBar == SB_VERT) && (lpsi->fMask & SIF_DISABLENOSCROLL)) + { + IntEnableScrollBar(nBar == SB_HORZ, psbi, Window->pSBInfo->WSBflags); + } + /* Return current position */ return lpsi->fMask & SIF_PREVIOUSPOS ? OldPos : pSBData->pos; }