summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2>2009-11-04 17:07:53 +0000
committerjonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2>2009-11-04 17:07:53 +0000
commit2e2daa66fccd73fd09fd3d188a2ed2e40adde167 (patch)
tree68b29d652966b37517ed7c5c6bc829d614892596
parentfbf316185a7613231677d21d52b0c6174ab109a9 (diff)
parent7a5e4cd906877649e3ccc8cd46bc3db6d31bf52f (diff)
downloadfpc-objc.tar.gz
* merged r14048 - r14054 from trunkobjc
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/objc@14055 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--installer/install.pas17
-rw-r--r--installer/scroll.pas19
-rw-r--r--packages/fv/src/views.pas18
-rw-r--r--rtl/inc/wustring22.inc8
-rw-r--r--tests/test/units/math/tnaninf.pp2
5 files changed, 41 insertions, 23 deletions
diff --git a/installer/install.pas b/installer/install.pas
index 0b8b1ad190..664bf35465 100644
--- a/installer/install.pas
+++ b/installer/install.pas
@@ -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;
diff --git a/installer/scroll.pas b/installer/scroll.pas
index 379bb103b8..803c071d62 100644
--- a/installer/scroll.pas
+++ b/installer/scroll.pas
@@ -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;
diff --git a/packages/fv/src/views.pas b/packages/fv/src/views.pas
index 3485a61431..299d29a5e2 100644
--- a/packages/fv/src/views.pas
+++ b/packages/fv/src/views.pas
@@ -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 }
diff --git a/rtl/inc/wustring22.inc b/rtl/inc/wustring22.inc
index 6b73469bb7..8a48073a33 100644
--- a/rtl/inc/wustring22.inc
+++ b/rtl/inc/wustring22.inc
@@ -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;
diff --git a/tests/test/units/math/tnaninf.pp b/tests/test/units/math/tnaninf.pp
index 339e641b9b..27862899a1 100644
--- a/tests/test/units/math/tnaninf.pp
+++ b/tests/test/units/math/tnaninf.pp
@@ -1,5 +1,5 @@
uses
- math;
+ Math;
begin
if not(isnan(nan)) then