From e0c894b848ffd4995728d2f30cd1952a14c9a880 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 21 Dec 2004 18:52:31 +0000 Subject: [PATCH] checkbox mask works, scrollbox still not --- installer/install.pas | 25 +++++++++++---------- installer/scroll.pas | 51 ++++++++++++++++++++++++++++--------------- 2 files changed, 47 insertions(+), 29 deletions(-) diff --git a/installer/install.pas b/installer/install.pas index 971d6db1a8..09a2fdb73c 100644 --- a/installer/install.pas +++ b/installer/install.pas @@ -161,10 +161,10 @@ program install; defsetpath : tcfgarray; end; - datarec=packed record + datarec=record basepath : DirStr; cfgval : word; - packmask : array[1..maxpacks] of word; + packmask : array[1..maxpacks] of sw_word; end; punzipdialog=^tunzipdialog; @@ -1123,9 +1123,9 @@ program install; if not(haslfn(zipfile)) then begin items[j]:=newsitem(package[i].name+diskspacestr(package[i].diskspace),items[j]); - packmask[j]:=packmask[j] or packagemask(i); + packmask[j]:=packmask[j] or packagemask(i); enabmask[j]:=enabmask[j] or packagemask(i); - firstitem[j]:=i; + firstitem[j]:=i-1; if createlog then writeln(log,'Checking lfn usage for ',zipfile,' ... no lfn'); end @@ -1133,7 +1133,7 @@ program install; begin items[j]:=newsitem(package[i].name+' (requires LFN support)',items[j]); enabmask[j]:=enabmask[j] or packagemask(i); - firstitem[j]:=i; + firstitem[j]:=i-1; if createlog then writeln(log,'Checking lfn usage for ',zipfile,' ... uses lfn'); end; @@ -1143,8 +1143,8 @@ program install; begin items[j]:=newsitem(package[i].name+diskspacestr(package[i].diskspace),items[j]); packmask[j]:=packmask[j] or packagemask(i); - enabmask[j]:=enabmask[j] or packagemask(i); - firstitem[j]:=i; + enabmask[j]:=enabmask[j] or packagemask(i); + firstitem[j]:=i-1; end; end else @@ -1207,10 +1207,10 @@ program install; if R.A.Y+cfg.pack[j].packages>R.B.Y then R.B.Y:=R.A.Y+cfg.pack[j].packages; new(packcbs[j],init(r,items[j])); - if data.packmask[j]=$ffff then + if data.packmask[j]=high(sw_word) then data.packmask[j]:=packmask[j]; packcbs[j]^.enablemask:={$ifdef DEV}$7fffffff{$else}enabmask[j]{$endif}; - packcbs[j]^.movedto(firstitem[j]); + packcbs[j]^.sel:=firstitem[j]; end; {--------- Main ---------} @@ -1337,7 +1337,7 @@ end; data.basepath:=cfg.basepath; data.cfgval:=0; for j:=1 to cfg.packs do - data.packmask[j]:=$ffff; + data.packmask[j]:=high(sw_word); repeat { select components } @@ -1995,7 +1995,10 @@ begin end. { $Log$ - Revision 1.21 2004-12-20 18:27:00 peter + Revision 1.22 2004-12-21 18:52:31 peter + checkbox mask works, scrollbox still not + + Revision 1.21 2004/12/20 18:27:00 peter * win32 fixes Revision 1.20 2004/12/18 16:19:57 peter diff --git a/installer/scroll.pas b/installer/scroll.pas index e732c0b976..aaba6e0250 100644 --- a/installer/scroll.pas +++ b/installer/scroll.pas @@ -1,7 +1,7 @@ { $Id$ This file is part of the Free Pascal run time library. - Copyright (c) 2000 by B‚rczi, G bor + Copyright (c) 2000 by B'rczi, G˙bor member of the Free Pascal development team Support objects for the install program @@ -148,10 +148,10 @@ begin end; procedure TScrollBox.ShiftViews(DX,DY: sw_integer); -procedure DoShift(P: PView); {$ifndef FPC}far;{$endif} -begin - P^.MoveTo(P^.Origin.X+DX,P^.Origin.Y+DY); -end; + procedure DoShift(P: PView); + begin + P^.MoveTo(P^.Origin.X+DX,P^.Origin.Y+DY); + end; begin ForEach(@DoShift); end; @@ -197,12 +197,19 @@ var V: PView; begin V:=Current; if (not Assigned(V)) then Exit; - P.X:=V^.Origin.X+V^.Cursor.X; P.Y:=V^.Origin.Y+V^.Cursor.Y; + P.X:=V^.Origin.X+V^.Cursor.X; + P.Y:=V^.Origin.Y+V^.Cursor.Y; ND:=Delta; - if (P.X<0) then Dec(ND.X,-P.X) else - if (P.X>=Size.X) then Inc(ND.X,P.X-(Size.X-1)); - if (P.Y<0) then Dec(ND.Y,-P.Y) else - if (P.Y>=Size.Y) then Inc(ND.Y,P.Y-(Size.Y-1)); + if (P.X<0) then + Dec(ND.X,-P.X) + else + if (P.X>=Size.X) then + Inc(ND.X,P.X-(Size.X-1)); + if (P.Y<0) then + Dec(ND.Y,-P.Y) + else + if (P.Y>=Size.Y) then + Inc(ND.Y,P.Y-(Size.Y-1)); if (ND.X<>Delta.X) or (ND.Y<>Delta.Y) then ScrollTo(ND.X,ND.Y); end; @@ -236,13 +243,18 @@ end; procedure TScrollBox.UpdateLimits; var Max: TPoint; -procedure Check(P: PView); {$ifndef FPC}far;{$endif} -var O: TPoint; -begin - O.X:=P^.Origin.X+P^.Size.X+Delta.X; O.Y:=P^.Origin.Y+P^.Size.Y+Delta.Y; - if O.X>Max.X then Max.X:=O.X; - if O.Y>Max.Y then Max.Y:=O.Y; -end; + + procedure Check(P: PView); + var O: TPoint; + begin + O.X:=P^.Origin.X+P^.Size.X+Delta.X; + O.Y:=P^.Origin.Y+P^.Size.Y+Delta.Y; + if O.X>Max.X then + Max.X:=O.X; + if O.Y>Max.Y then + Max.Y:=O.Y; + end; + begin Max.X:=0; Max.Y:=0; ForEach(@Check); @@ -253,7 +265,10 @@ end; END. { $Log$ - Revision 1.4 2004-12-20 18:27:00 peter + Revision 1.5 2004-12-21 18:52:31 peter + checkbox mask works, scrollbox still not + + Revision 1.4 2004/12/20 18:27:00 peter * win32 fixes Revision 1.3 2002/09/07 15:40:59 peter