mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 02:19:32 +02:00
LCL TControlScrollbar.Range: range should be position limit + page size, fixes scrolling behind max
git-svn-id: trunk@17250 -
This commit is contained in:
parent
9584f3723f
commit
5a1665f97c
@ -24,7 +24,7 @@ const
|
|||||||
|
|
||||||
procedure TControlScrollBar.SetPosition(const Value: Integer);
|
procedure TControlScrollBar.SetPosition(const Value: Integer);
|
||||||
var
|
var
|
||||||
OldPosition: Integer;
|
OldPosition, MaxPos: Integer;
|
||||||
ScrollInfo: TScrollInfo;
|
ScrollInfo: TScrollInfo;
|
||||||
begin
|
begin
|
||||||
if Value < 0 then
|
if Value < 0 then
|
||||||
@ -49,13 +49,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if Value > Range then
|
MaxPos := Range - Page;
|
||||||
|
if (MaxPos >= 0) and (Value > MaxPos) then
|
||||||
begin
|
begin
|
||||||
{$IFDEF VerboseScrollingWinControl}
|
{$IFDEF VerboseScrollingWinControl}
|
||||||
if DebugCondition then
|
if DebugCondition then
|
||||||
DebugLn(['TControlScrollBar.SetPosition Range Value=',Value,' > Range=',Range]);
|
DebugLn(['TControlScrollBar.SetPosition Range Value=',Value,' > Range=',Range]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
SetPosition(Range);
|
SetPosition(MaxPos);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -137,7 +138,7 @@ begin
|
|||||||
ScrollInfo.fMask := SIF_Range + SIF_Page;
|
ScrollInfo.fMask := SIF_Range + SIF_Page;
|
||||||
GetScrollInfo(ControlHandle, IntfBarKind[Kind], ScrollInfo);
|
GetScrollInfo(ControlHandle, IntfBarKind[Kind], ScrollInfo);
|
||||||
InvalidateScrollInfo;
|
InvalidateScrollInfo;
|
||||||
FRange := ScrollInfo.nMax - ScrollInfo.nMin - integer(ScrollInfo.nPage);
|
FRange := ScrollInfo.nMax - ScrollInfo.nMin;
|
||||||
end;
|
end;
|
||||||
Result := FRange;
|
Result := FRange;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user