mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-15 03:11:10 +02:00
* merged r14048 - r14054 from trunk
git-svn-id: branches/objc@14055 -
This commit is contained in:
commit
2b0879842e
@ -1106,14 +1106,22 @@ program install;
|
||||
else
|
||||
{$endif MAYBE_LFN}
|
||||
begin
|
||||
items[j]:=newsitem(package[i].name+diskspacestr(package[i].diskspace),items[j]);
|
||||
items[j]:=newsitem(package[i].name+diskspacestr(package[i].diskspace)
|
||||
{$ifdef DEBUG}
|
||||
+' ('+dotstr(i)+')'
|
||||
{$endif DEBUG}
|
||||
,items[j]);
|
||||
packmask[j]:=packmask[j] or packagemask(i);
|
||||
enabmask[j]:=enabmask[j] or packagemask(i);
|
||||
firstitem[j]:=i-1;
|
||||
end;
|
||||
end
|
||||
else
|
||||
items[j]:=newsitem(package[i].name,items[j]);
|
||||
items[j]:=newsitem(package[i].name
|
||||
{$ifdef DEBUG}
|
||||
+' ('+dotstr(i)+')'
|
||||
{$endif DEBUG}
|
||||
,items[j]);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1186,7 +1194,10 @@ program install;
|
||||
if (sbr.b.y-sbr.a.y)<cfg.pack[j].packages then
|
||||
begin
|
||||
sbsbr.assign(sbr.b.x,sbr.a.y,sbr.b.x+1,sbr.b.y);
|
||||
New(sbsb, init(sbsbr));
|
||||
sbsb:=CreateIdScrollBar (sbsbr.a.x, sbsbr.a.y,sbsbr.b.y-sbsbr.a.y,j,false);
|
||||
sbsb^.SetRange(0,cfg.pack[j].packages-(sbsbr.b.y-sbsbr.a.y)-1);
|
||||
sbsb^.SetStep(5,1);
|
||||
//New(sbsb, init(sbsbr));
|
||||
end
|
||||
else
|
||||
sbsb:=nil;
|
||||
|
@ -52,6 +52,7 @@ type
|
||||
private
|
||||
DrawLock: Byte;
|
||||
DrawFlag: Boolean;
|
||||
ScrollFlag : boolean;
|
||||
procedure CheckDraw;
|
||||
procedure UpdateLimits;
|
||||
procedure ShiftViews(DX,DY: sw_integer);
|
||||
@ -86,6 +87,11 @@ procedure TScrollBox.HandleEvent(var Event: TEvent);
|
||||
begin
|
||||
if (Event.What=evBroadcast) and (Event.Command=cmCursorChanged) then
|
||||
TrackCursor;
|
||||
If (Event.What = evBroadcast) AND
|
||||
(Event.Command = cmScrollBarChanged) AND { Scroll bar change }
|
||||
Not ScrollFlag AND
|
||||
((Event.InfoPtr = HScrollBar) OR { Our scrollbar? }
|
||||
(Event.InfoPtr = VScrollBar)) Then ScrollDraw; { Redraw scroller }
|
||||
inherited HandleEvent(Event);
|
||||
end;
|
||||
|
||||
@ -123,7 +129,7 @@ begin
|
||||
if (D.X <> Delta.X) or (D.Y <> Delta.Y) then
|
||||
begin
|
||||
SetCursor(Cursor.X + Delta.X - D.X, Cursor.Y + Delta.Y - D.Y);
|
||||
Delta := D;
|
||||
ScrollTo(D.X,D.Y);
|
||||
if DrawLock <> 0 then
|
||||
DrawFlag := True
|
||||
else
|
||||
@ -134,14 +140,19 @@ end;
|
||||
|
||||
procedure TScrollBox.ScrollTo(X, Y: Sw_Integer);
|
||||
var DX,DY: sw_integer;
|
||||
PrevScrollFlag : boolean;
|
||||
begin
|
||||
Inc(DrawLock);
|
||||
DX:=Delta.X-X;
|
||||
DY:=Delta.Y-Y;
|
||||
PrevScrollFlag:=ScrollFlag;
|
||||
ScrollFlag:=true;
|
||||
|
||||
if HScrollBar <> nil then
|
||||
HScrollBar^.SetValue(X);
|
||||
if VScrollBar <> nil then
|
||||
VScrollBar^.SetValue(Y);
|
||||
ScrollFlag:=PrevScrollFlag;
|
||||
ShiftViews(DX,DY);
|
||||
Dec(DrawLock);
|
||||
CheckDraw;
|
||||
@ -154,6 +165,8 @@ procedure TScrollBox.ShiftViews(DX,DY: sw_integer);
|
||||
end;
|
||||
begin
|
||||
ForEach(@DoShift);
|
||||
Delta.X:=Delta.X-DX;
|
||||
Delta.Y:=Delta.Y-DY;
|
||||
end;
|
||||
|
||||
procedure TScrollBox.SetLimit(X, Y: Sw_Integer);
|
||||
@ -162,9 +175,9 @@ begin
|
||||
Limit.Y := Y;
|
||||
Inc(DrawLock);
|
||||
if HScrollBar <> nil then
|
||||
HScrollBar^.SetParams(HScrollBar^.Value, 0, X - Size.X, Size.X - 1, HScrollBar^.ArStep);
|
||||
HScrollBar^.SetParams(HScrollBar^.Value, HScrollBar^.Min, HScrollBar^.Max, HScrollBar^.PgStep, HScrollBar^.ArStep);
|
||||
if VScrollBar <> nil then
|
||||
VScrollBar^.SetParams(VScrollBar^.Value, 0, Y - Size.Y, Size.Y - 1, VScrollBar^.ArStep);
|
||||
VScrollBar^.SetParams(VScrollBar^.Value, VScrollBar^.Min, VScrollBar^.Max, VScrollBar^.PgStep, VScrollBar^.ArStep);
|
||||
Dec(DrawLock);
|
||||
CheckDraw;
|
||||
end;
|
||||
|
@ -3136,16 +3136,16 @@ VAR Tracking: Boolean; I, P, S, ClickPart, Iv: Sw_Integer;
|
||||
Part := -1; { Preset failure }
|
||||
If Extent.Contains(Mouse) Then Begin { Contains mouse }
|
||||
If (Size.X = 1) Then Begin { Vertical scrollbar }
|
||||
Mark := Mouse.Y - 1; { Calc position }
|
||||
Mark := Mouse.Y; { Calc position }
|
||||
End Else Begin { Horizontal bar }
|
||||
Mark := Mouse.X - 1; { Calc position }
|
||||
Mark := Mouse.X; { Calc position }
|
||||
End;
|
||||
If (Mark >= P) AND (Mark < P+1) Then { Within thumbnail }
|
||||
Part := sbIndicator; { Indicator part }
|
||||
If (Part <> sbIndicator) Then Begin { Not indicator part }
|
||||
If (Mark < 1) Then Part := sbLeftArrow Else { Left arrow part }
|
||||
If (Mark < P) Then Part := sbPageLeft Else { Page left part }
|
||||
If (Mark < S) Then Part := sbPageRight Else { Page right part }
|
||||
If (Mark < S-1) Then Part := sbPageRight Else { Page right part }
|
||||
Part := sbRightArrow; { Right arrow part }
|
||||
If (Size.X = 1) Then Inc(Part, 4); { Correct for vertical }
|
||||
End;
|
||||
@ -3205,14 +3205,14 @@ BEGIN
|
||||
MakeLocal(Event.Where, Mouse); { Localize mouse }
|
||||
Extent.A.X := 0; { Zero x extent value }
|
||||
Extent.A.Y := 0; { Zero y extent value }
|
||||
Extent.B.X := Size.X; { Set extent x value }
|
||||
Extent.B.Y := Size.Y; { set extent y value }
|
||||
Extent.B.X := Size.X; { Set extent x value }
|
||||
Extent.B.Y := Size.Y; { set extent y value }
|
||||
P := GetPos; { Current position }
|
||||
S := GetSize; { Initial size }
|
||||
ClickPart := GetPartCode; { Get part code }
|
||||
If (ClickPart <> sbIndicator) Then Begin { Not thumb nail }
|
||||
Repeat
|
||||
MakeLocal(Event.Where, Mouse); { Localize mouse }
|
||||
MakeLocal(Event.Where, Mouse); { Localize mouse }
|
||||
If GetPartCode = ClickPart Then
|
||||
SetValue(Value+ScrollStep(ClickPart)); { Same part repeat }
|
||||
Until NOT MouseEvent(Event, evMouseAuto); { Until auto done }
|
||||
@ -3220,12 +3220,12 @@ BEGIN
|
||||
End Else Begin { Thumb nail move }
|
||||
Iv := Value; { Initial value }
|
||||
Repeat
|
||||
MakeLocal(Event.Where, Mouse); { Localize mouse }
|
||||
MakeLocal(Event.Where, Mouse); { Localize mouse }
|
||||
Tracking := Extent.Contains(Mouse); { Check contains }
|
||||
If Tracking Then Begin { Tracking mouse }
|
||||
If (Size.X=1) Then
|
||||
I := Mouse.Y-1 Else { Calc vert position }
|
||||
I := Mouse.X-1; { Calc horz position }
|
||||
I := Mouse.Y Else { Calc vert position }
|
||||
I := Mouse.X; { Calc horz position }
|
||||
If (I < 0) Then I := 0; { Check underflow }
|
||||
If (I > S) Then I := S; { Check overflow }
|
||||
End Else I := GetPos; { Get position }
|
||||
|
@ -1447,13 +1447,7 @@ var
|
||||
begin
|
||||
SetLength(S,Len);
|
||||
If (Buf<>Nil) and (Len>0) then
|
||||
begin
|
||||
BufLen := IndexByte(Buf^, Len+1, 0);
|
||||
If (BufLen>0) and (BufLen < Len) then
|
||||
Len := BufLen;
|
||||
widestringmanager.Ansi2WideMoveProc(Buf,S,Len);
|
||||
//PWideChar(Pointer(S)+Len*sizeof(WideChar))^:=#0;
|
||||
end;
|
||||
widestringmanager.Ansi2WideMoveProc(Buf,S,Len);
|
||||
end;
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
uses
|
||||
math;
|
||||
Math;
|
||||
|
||||
begin
|
||||
if not(isnan(nan)) then
|
||||
|
Loading…
Reference in New Issue
Block a user