Hi all,

these are some fixes as follows:

1 & 2) The only really important and no-brainer: fix TPaintBox not
triggering OnPaint.

3) Add some (ugly, I admit) casts to work-around some badly translated
Winapi headers in FPC 2.0.4 and remove the associated warnings. I've
verified that the 2 functions affected receive CONST arguments
according to WinSDK.

4) One I'm almost sure will get rejected: Add methods for handling
boolean value, by means of a wrapper around 'integer' methods. To make
things "worse" I couldn't resist renaming the parameters from
'Default' to 'DefaultValue'...

5) Fix a single method, TApplication.CreateForm(), for which the
Reference parameter should be 'out', not 'var', and the compiler hint
was annoying me ;-)

Best regards,
Flávio
Index: H:/projetos/lazarus/lcl/extctrls.pp
===================================================================
--- H:/projetos/lazarus/lcl/extctrls.pp	(revision 10613)
+++ H:/projetos/lazarus/lcl/extctrls.pp	(working copy)
@@ -471,8 +471,6 @@
   { TPaintBox }
 
   TPaintBox = class(TGraphicControl)
-  private
-    FOnPaint: TNotifyEvent;
   protected
     procedure Paint; override;
   public
Index: H:/projetos/lazarus/lcl/include/paintbox.inc
===================================================================
--- H:/projetos/lazarus/lcl/include/paintbox.inc	(revision 10613)
+++ H:/projetos/lazarus/lcl/include/paintbox.inc	(working copy)
@@ -38,7 +38,7 @@
     end;
     exit;
   end;
-  if Assigned(FOnPaint) then begin
+  if Assigned(OnPaint) then begin
     Canvas.Font := Font;
     Canvas.Brush.Color := Color;
     inherited Paint;
Index: H:/projetos/lazarus/lcl/interfaces/win32/win32winapi.inc
===================================================================
--- H:/projetos/lazarus/lcl/interfaces/win32/win32winapi.inc	(revision 10613)
+++ H:/projetos/lazarus/lcl/interfaces/win32/win32winapi.inc	(working copy)
@@ -1111,12 +1111,8 @@
 End;
 
 function TWin32WidgetSet.DrawFocusRect(DC: HDC; const Rect: TRect): boolean;
-var
-  lRect: Windows.RECT;
 begin
-  {$message warn TWin32WidgetSet.DrawFocusRect TODO: optimize Rect copying}
-  lRect:=Rect;
-  Result:= Windows.DrawFocusRect(DC, lRect);
+  Result:= Windows.DrawFocusRect(DC, PRect(@Rect)^);
 end;
 
 {------------------------------------------------------------------------------
@@ -1434,12 +1430,8 @@
 
 function TWin32WidgetSet.FrameRect(DC: HDC; const ARect: TRect;
   hBr: HBRUSH) : integer;
-var
-  lRect: Windows.RECT;
 begin
-  {$message warn TWin32WidgetSet.FrameRect TODO: optimize ARect copying}
-  lRect := ARect;
-  Result := Windows.FrameRect(DC, lRect, hBr);
+  Result := Windows.FrameRect(DC, PRect(@ARect)^, hBr);
 end;
 
 {------------------------------------------------------------------------------
Index: H:/projetos/lazarus/lcl/propertystorage.pas
===================================================================
--- H:/projetos/lazarus/lcl/propertystorage.pas	(revision 10613)
+++ H:/projetos/lazarus/lcl/propertystorage.pas	(working copy)
@@ -137,8 +137,8 @@
     procedure RestoreProperties; virtual;
     Procedure GetPropertyList(List: TStrings); virtual; abstract;
     procedure FinishPropertyList(List: TStrings); virtual;
-    function  DoReadInteger(const Section, Ident : String; Default: Integer): Integer; Virtual;
-    function  DoReadString(const Section, Ident, Default: string): string; Virtual; Abstract;
+    function  DoReadInteger(const Section, Ident : String; DefaultValue: Integer): Integer; Virtual;
+    function  DoReadString(const Section, Ident, DefaultValue: string): string; Virtual; Abstract;
     procedure DoWriteString(const Section, Ident, Value: string); Virtual; Abstract;
     procedure DoWriteInteger(const Section, Ident : String; Value: Integer); Virtual;
     Procedure DoEraseSections(const ARootSection : String);virtual;abstract;
@@ -150,14 +150,16 @@
     // Public Read/Write methods
     procedure StorageNeeded(ReadOnly: Boolean);Virtual;
     procedure FreeStorage; Virtual;
-    function  ReadString(const Ident, Default: string): string;
-    function  ReadInteger(const Ident: string; Default: Longint): Longint;
+    function  ReadBoolean(const Ident: string; DefaultValue: Boolean): Boolean;
+    function  ReadString(const Ident, DefaultValue: string): string;
+    function  ReadInteger(const Ident: string; DefaultValue: Longint): Longint;
     procedure ReadRect(const Ident: string; out ARect: TRect;
                        const Default: TRect);
     procedure ReadStrings(const Ident: string; const List: TStrings;
                           const DefaultList: TStrings = nil);
     procedure WriteString(const Ident, Value: string);
     procedure WriteInteger(const Ident: string; Value: Longint);
+    procedure WriteBoolean(const Ident: string; Value: Boolean);
     procedure WriteRect(const Ident: string; const Value: TRect);
     procedure WriteStrings(const Ident: string; const List: TStrings);
     procedure EraseSections;
@@ -657,9 +659,9 @@
 end;
 
 function TCustomPropertyStorage.DoReadInteger(const Section, Ident: String;
-  Default: Integer): Integer;
+  DefaultValue: Integer): Integer;
 begin
-  Result:=StrToIntDef(DoReadString(Section,Ident,IntToStr(Default)),Default);
+  Result:=StrToIntDef(DoReadString(Section,Ident,IntToStr(DefaultValue)),DefaultValue);
 end;
 
 procedure TCustomPropertyStorage.DoWriteInteger(const Section, Ident: String;
@@ -676,9 +678,9 @@
 begin
 end;
 
-function TCustomPropertyStorage.ReadString(const Ident, Default: string): string;
+function TCustomPropertyStorage.ReadString(const Ident, DefaultValue: string): string;
 begin
-  Result := DoReadString(RootSection, Ident, Default);
+  Result := DoReadString(RootSection, Ident, DefaultValue);
 end;
 
 procedure TCustomPropertyStorage.WriteString(const Ident, Value: string);
@@ -686,11 +688,16 @@
   DoWriteString(RootSection, Ident, Value);
 end;
 
-function TCustomPropertyStorage.ReadInteger(const Ident: string; Default: Longint): Longint;
+function TCustomPropertyStorage.ReadInteger(const Ident: string; DefaultValue: Longint): Longint;
 begin
-  Result := DoReadInteger(RootSection, Ident, Default);
+  Result := DoReadInteger(RootSection, Ident, DefaultValue);
 end;
 
+function TCustomPropertyStorage.ReadBoolean(const Ident: string; DefaultValue: Boolean): Boolean;
+begin
+  Result := DoReadInteger(RootSection, Ident, Ord(DefaultValue)) <> Ord(False);
+end;
+
 procedure TCustomPropertyStorage.ReadRect(const Ident: string;
   out ARect: TRect; const Default: TRect);
 begin
@@ -732,6 +739,11 @@
   DoWriteInteger(RootSection, Ident, Value);
 end;
 
+procedure TCustomPropertyStorage.WriteBoolean(const Ident: string; Value: Boolean);
+begin
+  DoWriteInteger(RootSection, Ident, Ord(Value));
+end;
+
 procedure TCustomPropertyStorage.WriteRect(const Ident: string;
   const Value: TRect);
 begin
Index: H:/projetos/lazarus/lcl/forms.pp
===================================================================
--- H:/projetos/lazarus/lcl/forms.pp	(revision 10613)
+++ H:/projetos/lazarus/lcl/forms.pp	(working copy)
@@ -983,7 +983,7 @@
     destructor Destroy; override;
     procedure ControlDestroyed(AControl: TControl);
     procedure BringToFront;
-    procedure CreateForm(InstanceClass: TComponentClass; var Reference);
+    procedure CreateForm(InstanceClass: TComponentClass; out Reference);
     procedure UpdateMainForm(AForm: TForm);
     procedure QueueAsyncCall(AMethod: TDataEvent; Data: PtrInt);
     procedure ReleaseComponent(AComponent: TComponent);
Index: H:/projetos/lazarus/lcl/include/application.inc
===================================================================
--- H:/projetos/lazarus/lcl/include/application.inc	(revision 10613)
+++ H:/projetos/lazarus/lcl/include/application.inc	(working copy)
@@ -1541,7 +1541,7 @@
   forms list
 ------------------------------------------------------------------------------}
 procedure TApplication.CreateForm(InstanceClass: TComponentClass;
-  var Reference);
+  out Reference);
 var
   Instance: TComponent;
   ok: boolean;

Reply via email to