mirror of
https://github.com/reactos/reactos.git
synced 2025-07-24 18:43:37 +00:00
[NTUSER] Scrollbar.c, improve co_IntSetScrollInfo() CORE-17769
Fixes CORE-17769 'Rapps Listview manual resize may erroneously not draw the triangles sometimes'
This could happen for both: themed and unthemed.
CORE-17769 was a regression introduced by 0.4.14-dev-1134-g 00adb1a3f9
We don't really like the added state in form of the static variables,
but the patch works good from a pure testing-perspective.
Many Thanks to the patches author: Doug Lyons
This commit is contained in:
parent
40ee59d609
commit
dda9c3979e
1 changed files with 16 additions and 2 deletions
|
@ -495,6 +495,8 @@ co_IntSetScrollInfo(PWND Window, INT nBar, LPCSCROLLINFO lpsi, BOOL bRedraw)
|
|||
/* [0] = HORZ, [1] = VERT */
|
||||
static PWND PrevHwnd[2] = { 0 };
|
||||
static DWORD PrevPos[2] = { 0 };
|
||||
static DWORD PrevMax[2] = { 0 };
|
||||
static INT PrevAction[2] = { 0 };
|
||||
|
||||
ASSERT_REFS_CO(Window);
|
||||
|
||||
|
@ -637,6 +639,16 @@ co_IntSetScrollInfo(PWND Window, INT nBar, LPCSCROLLINFO lpsi, BOOL bRedraw)
|
|||
}
|
||||
|
||||
//done:
|
||||
if ((Window != PrevHwnd[nBar]) || (action != PrevAction[nBar]))
|
||||
{
|
||||
if ((action == SA_SSI_SHOW) && (PrevAction[nBar] == SA_SSI_HIDE))
|
||||
{
|
||||
co_UserShowScrollBar(Window, nBar, TRUE, TRUE);
|
||||
}
|
||||
}
|
||||
if ((action != PrevAction[nBar]) && action != 0)
|
||||
PrevAction[nBar] = action;
|
||||
|
||||
if ( action & SA_SSI_HIDE )
|
||||
{
|
||||
co_UserShowScrollBar(Window, nBar, FALSE, FALSE);
|
||||
|
@ -690,12 +702,14 @@ co_IntSetScrollInfo(PWND Window, INT nBar, LPCSCROLLINFO lpsi, BOOL bRedraw)
|
|||
}
|
||||
}
|
||||
CurrentPos = lpsi->fMask & SIF_PREVIOUSPOS ? OldPos : pSBData->pos;
|
||||
/* Check for changes to Window or CurrentPos */
|
||||
if ((Window != PrevHwnd[nBar]) || (CurrentPos != PrevPos[nBar]))
|
||||
/* Check for changes to Window or CurrentPos or lpsi->nMax */
|
||||
if ((Window != PrevHwnd[nBar]) || (CurrentPos != PrevPos[nBar]) ||
|
||||
(lpsi->nMax != PrevMax[nBar]))
|
||||
{
|
||||
co_UserRedrawWindow(Window, &UpdateRect, 0, RDW_INVALIDATE | RDW_FRAME);
|
||||
PrevHwnd[nBar] = Window;
|
||||
PrevPos[nBar] = CurrentPos;
|
||||
PrevMax[nBar] = lpsi->nMax;
|
||||
}
|
||||
}
|
||||
} // FIXME: Arrows
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue