Commit f7c99e3a authored by Vitaly Lipatov's avatar Vitaly Lipatov Committed by Alexandre Julliard

- Fix scrollbar show/update conditions in SCROLL_SetScrollInfo: we DO

NOT show scroll bar if only page parameter changing when scrollbar is disabled. - Removed bChangeParams from SCROLL_SetScrollInfo as unneeded flag.
parent 3c5cdd4c
......@@ -1493,14 +1493,13 @@ INT WINAPI SetScrollInfo(HWND hwnd, INT nBar, const SCROLLINFO *info, BOOL bRedr
return SCROLL_SetScrollInfo( hwnd, nBar, info, bRedraw );
}
static INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar, const SCROLLINFO *info, BOOL bRedraw )
static INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar, LPCSCROLLINFO info, BOOL bRedraw )
{
/* Update the scrollbar state and set action flags according to
* what has to be done graphics wise. */
SCROLLBAR_INFO *infoPtr;
UINT new_flags;
BOOL bChangeParams = FALSE; /* don't show/hide scrollbar if params don't change */
INT action = 0;
/* handle invalid data structure */
......@@ -1521,11 +1520,10 @@ static INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar, const SCROLLINFO *info, BO
if (info->fMask & SIF_PAGE)
{
if( infoPtr->page != info->nPage )
if( infoPtr->page != info->nPage && info->nPage >= 0)
{
infoPtr->page = info->nPage;
action |= SA_SSI_REFRESH;
bChangeParams = TRUE;
}
}
......@@ -1548,9 +1546,9 @@ static INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar, const SCROLLINFO *info, BO
if ((info->nMin > info->nMax) ||
((UINT)(info->nMax - info->nMin) >= 0x80000000))
{
action |= SA_SSI_REFRESH;
infoPtr->minVal = 0;
infoPtr->maxVal = 0;
bChangeParams = TRUE;
}
else
{
......@@ -1560,13 +1558,11 @@ static INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar, const SCROLLINFO *info, BO
action |= SA_SSI_REFRESH;
infoPtr->minVal = info->nMin;
infoPtr->maxVal = info->nMax;
bChangeParams = TRUE;
}
}
}
/* Make sure the page size is valid */
if (infoPtr->page < 0) infoPtr->page = 0;
else if (infoPtr->page > infoPtr->maxVal - infoPtr->minVal + 1 )
infoPtr->page = infoPtr->maxVal - infoPtr->minVal + 1;
......@@ -1600,16 +1596,16 @@ static INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar, const SCROLLINFO *info, BO
new_flags = ESB_DISABLE_BOTH;
action |= SA_SSI_REFRESH;
}
else if ((nBar != SB_CTL) && bChangeParams)
else if ((nBar != SB_CTL) && (action & SA_SSI_REFRESH))
{
action = SA_SSI_HIDE;
goto done;
}
}
else /* Show and enable scroll-bar */
else /* Show and enable scroll-bar only if no page only changed. */
if (info->fMask != SIF_PAGE)
{
new_flags = 0;
if ((nBar != SB_CTL) && bChangeParams)
new_flags = ESB_ENABLE_BOTH;
if ((nBar != SB_CTL) && ( (action & SA_SSI_REFRESH) ))
action |= SA_SSI_SHOW;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment