fixed some scrolling issues
Modified: trunk/reactos/lib/aclui/checklist.c
_____
Modified: trunk/reactos/lib/aclui/checklist.c
--- trunk/reactos/lib/aclui/checklist.c 2005-07-04 11:05:04 UTC (rev
16406)
+++ trunk/reactos/lib/aclui/checklist.c 2005-07-04 11:52:16 UTC (rev
16407)
@@ -310,17 +310,16 @@
if (DirectlyInCheckBox != NULL)
{
INT y = ppt->y % infoPtr->ItemHeight;
+ INT cxBox = infoPtr->ItemHeight - (2 *
CI_TEXT_MARGIN_HEIGHT);
if ((y >= CI_TEXT_MARGIN_HEIGHT &&
y < infoPtr->ItemHeight - CI_TEXT_MARGIN_HEIGHT) &&
- (((ppt->x >= (infoPtr->CheckBoxLeft[CLB_ALLOW] -
(infoPtr->ItemHeight / 2))) &&
- (ppt->x < (infoPtr->CheckBoxLeft[CLB_ALLOW] -
(infoPtr->ItemHeight / 2) +
- infoPtr->ItemHeight - (2 *
CI_TEXT_MARGIN_HEIGHT))))
+ (((ppt->x >= (infoPtr->CheckBoxLeft[CLB_ALLOW] - (cxBox
/ 2))) &&
+ (ppt->x < (infoPtr->CheckBoxLeft[CLB_ALLOW] - (cxBox
/ 2) + cxBox)))
||
- ((ppt->x >= (infoPtr->CheckBoxLeft[CLB_DENY] -
(infoPtr->ItemHeight / 2))) &&
- (ppt->x < (infoPtr->CheckBoxLeft[CLB_DENY] -
(infoPtr->ItemHeight / 2) +
- infoPtr->ItemHeight - (2 *
CI_TEXT_MARGIN_HEIGHT))))))
+ ((ppt->x >= (infoPtr->CheckBoxLeft[CLB_DENY] - (cxBox
/ 2))) &&
+ (ppt->x < (infoPtr->CheckBoxLeft[CLB_DENY] - (cxBox /
2) + cxBox)))))
{
*DirectlyInCheckBox = TRUE;
}
@@ -446,6 +445,7 @@
RECT rcClient;
SCROLLINFO ScrollInfo;
LONG Style;
+ INT VisibleItems;
GetClientRect(infoPtr->hSelf,
&rcClient);
@@ -457,33 +457,40 @@
ScrollInfo.nPage = ((rcClient.bottom - rcClient.top) +
infoPtr->ItemHeight - 1) / infoPtr->ItemHeight;
ScrollInfo.nPos = 0;
ScrollInfo.nTrackPos = 0;
+
+ VisibleItems = (rcClient.bottom - rcClient.top) /
infoPtr->ItemHeight;
+
+ if (ScrollInfo.nPage == VisibleItems && ScrollInfo.nMax > 0)
+ {
+ ScrollInfo.nMax--;
+ }
+ SetScrollInfo(infoPtr->hSelf,
+ SB_VERT,
+ &ScrollInfo,
+ TRUE);
+
if (AllowChangeStyle)
{
Style = GetWindowLong(infoPtr->hSelf,
GWL_STYLE);
/* determine whether the vertical scrollbar has to be visible
or not */
- if (ScrollInfo.nMax > ScrollInfo.nPage &&
+ if (ScrollInfo.nMax > VisibleItems &&
!(Style & WS_VSCROLL))
{
SetWindowLong(infoPtr->hSelf,
GWL_STYLE,
Style | WS_VSCROLL);
}
- else if (ScrollInfo.nMax < ScrollInfo.nPage &&
- Style & WS_VSCROLL)
+ else if (ScrollInfo.nMax <= VisibleItems &&
+ (Style & WS_VSCROLL))
{
SetWindowLong(infoPtr->hSelf,
GWL_STYLE,
Style & ~WS_VSCROLL);
}
}
-
- SetScrollInfo(infoPtr->hSelf,
- SB_VERT,
- &ScrollInfo,
- TRUE);
RedrawWindow(infoPtr->hSelf,
NULL,
Show replies by date