Răsfoiți Sursa

* merged r14048 - r14054 from trunk

git-svn-id: branches/objc@14055 -
Jonas Maebe 15 ani în urmă
părinte
comite
2b0879842e

+ 14 - 3
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;

+ 16 - 3
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;

+ 9 - 9
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 }

+ 1 - 7
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;
 
 

+ 1 - 1
tests/test/units/math/tnaninf.pp

@@ -1,5 +1,5 @@
 uses
-  math;
+  Math;
 
 begin
   if not(isnan(nan)) then