From 22c938a439dbe8645c337960c7917d379a43a370 Mon Sep 17 00:00:00 2001 From: Zeus Date: Wed, 20 Sep 2023 21:20:47 +0200 Subject: [PATCH] Update CompileAll.bat --- .gitignore | 12 +- CompileAll.bat | 32 +- .../ALAnimation/_Source/ALAnimationDemo.dproj | 2 +- .../_Source/ALFacebookLogin.dproj | 2 +- .../ALFmxControls/_Source/ALFmxControls.dproj | 2 +- .../_Source/ALFmxFilterEffectsDemo.dproj | 2 +- .../_Source/ALGeoPositionSensorDemo.dproj | 2 +- .../_Source/ALLiveVideoChatClient.dproj | 2 +- .../_Source/ALNotificationServiceDemo.dproj | 2 +- .../Alexandria/11_2/Alexandria_11_2.patch | 828 ------------------ Embarcadero/Alexandria/11_2/Update.bat | 94 -- Embarcadero/Alexandria/11_3/Update.bat | 94 -- ...Alexandria_11_3.patch => Alexandria.patch} | 168 ++-- Embarcadero/Alexandria/Update.bat | 105 +++ README.md | 59 +- Tests/_Source/ALTests.dproj | 2 +- .../AndroidMerger/_Build/Sample/Sample.dproj | 2 +- Tools/DeployMan/_Build/Sample/Sample.dproj | 2 +- 18 files changed, 262 insertions(+), 1150 deletions(-) delete mode 100644 Embarcadero/Alexandria/11_2/Alexandria_11_2.patch delete mode 100644 Embarcadero/Alexandria/11_2/Update.bat delete mode 100644 Embarcadero/Alexandria/11_3/Update.bat rename Embarcadero/Alexandria/{11_3/Alexandria_11_3.patch => Alexandria.patch} (89%) create mode 100644 Embarcadero/Alexandria/Update.bat diff --git a/.gitignore b/.gitignore index fe4d1579f..95c6b3204 100644 --- a/.gitignore +++ b/.gitignore @@ -24,14 +24,10 @@ Dcu /Demos/**/OSXARM64/Release /Demos/**/Win32/Release /Demos/**/Win64/Release -/Embarcadero/Rio/10_3_3/fmx -/Embarcadero/Rio/10_3_3/rtl -/Embarcadero/Sydney/10_4_2/rtl -/Embarcadero/Sydney/10_4_2/fmx -/Embarcadero/Alexandria/11_2/rtl -/Embarcadero/Alexandria/11_2/fmx -/Embarcadero/Alexandria/11_3/rtl -/Embarcadero/Alexandria/11_3/fmx +/Embarcadero/Alexandria/rtl +/Embarcadero/Alexandria/fmx +/Embarcadero/Alexandria/rtl +/Embarcadero/Alexandria/fmx /Libraries/bpl /Libraries/ios/firebase /Libraries/ios/facebook diff --git a/CompileAll.bat b/CompileAll.bat index cd48d4f60..cc02c35e6 100644 --- a/CompileAll.bat +++ b/CompileAll.bat @@ -54,6 +54,36 @@ REM -------------- if not exist "%ALBaseDir%\Source\Alcinoe.inc" goto ERROR +REM -------------------------------------------- +REM Copy and patch localy the delphi source code +REM -------------------------------------------- + +:COPY_AND_PATCH_DELPHI_SOURCE + +echo ------------------ +echo Delphi source code +echo ------------------ +echo. + +set ALCopyAndPatchDelphiSource= +set /P ALCopyAndPatchDelphiSource=Copy the Delphi source code and patch it locally (Y/N, default=Y)?: %=% +more < nul > nul & REM This instruction to clear the ERRORLEVEL because previous instruction set ERRORLEVEL to 1 if empty input +echo. + +if "%ALCopyAndPatchDelphiSource%"=="" set ALCopyAndPatchDelphiSource=Y +if "%ALCopyAndPatchDelphiSource%"=="y" set ALCopyAndPatchDelphiSource=Y +if "%ALCopyAndPatchDelphiSource%"=="n" set ALCopyAndPatchDelphiSource=N +if "%ALCopyAndPatchDelphiSource%"=="Y" goto DO_COPY_AND_PATCH_DELPHI_SOURCE +if "%ALCopyAndPatchDelphiSource%"=="N" goto DOWNLOAD_LIBRARIES +goto COPY_AND_PATCH_DELPHI_SOURCE + +:DO_COPY_AND_PATCH_DELPHI_SOURCE + +call %ALBaseDir%\Embarcadero\%ALDelphiName%\Update.bat +IF ERRORLEVEL 1 goto ERROR +echo. + + REM ---------------------- REM Download the libraries REM ---------------------- @@ -61,7 +91,7 @@ REM ---------------------- :DOWNLOAD_LIBRARIES echo --------- -echo LIBRARIES +echo Libraries echo --------- echo. diff --git a/Demos/ALAnimation/_Source/ALAnimationDemo.dproj b/Demos/ALAnimation/_Source/ALAnimationDemo.dproj index 01f3b7ccf..d851a8fbe 100644 --- a/Demos/ALAnimation/_Source/ALAnimationDemo.dproj +++ b/Demos/ALAnimation/_Source/ALAnimationDemo.dproj @@ -146,7 +146,7 @@ $(BDS)\bin\delphi_PROJECTICON.ico $(BDS)\bin\delphi_PROJECTICNS.icns ALAnimationDemo - ..\..\..\Source;..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\Embarcadero\Alexandria\11_3\rtl\android;$(DCC_UnitSearchPath) + ..\..\..\Source;..\..\..\Embarcadero\Alexandria\fmx;..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\Embarcadero\Alexandria\rtl\android;$(DCC_UnitSearchPath) DBXSqliteDriver;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;bindengine;DataSnapClient;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;xmlrtl;DataSnapNativeClient;ibxbindings;rtl;FireDACDSDriver;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) diff --git a/Demos/ALFacebookLogin/_Source/ALFacebookLogin.dproj b/Demos/ALFacebookLogin/_Source/ALFacebookLogin.dproj index 0628e32b7..d89f82c4f 100644 --- a/Demos/ALFacebookLogin/_Source/ALFacebookLogin.dproj +++ b/Demos/ALFacebookLogin/_Source/ALFacebookLogin.dproj @@ -160,7 +160,7 @@ true - ..\..\..\Source;..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\Embarcadero\Alexandria\11_3\rtl\android;$(DCC_UnitSearchPath) + ..\..\..\Source;..\..\..\Embarcadero\Alexandria\fmx;..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\Embarcadero\Alexandria\rtl\android;$(DCC_UnitSearchPath) 65001 $(BDS)\bin\delphi_PROJECTICNS.icns true diff --git a/Demos/ALFmxControls/_Source/ALFmxControls.dproj b/Demos/ALFmxControls/_Source/ALFmxControls.dproj index 56db00360..7ae5d24ef 100644 --- a/Demos/ALFmxControls/_Source/ALFmxControls.dproj +++ b/Demos/ALFmxControls/_Source/ALFmxControls.dproj @@ -160,7 +160,7 @@ true - ..\..\..\Source;..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\Embarcadero\Alexandria\11_3\rtl\android;$(DCC_UnitSearchPath) + ..\..\..\Source;..\..\..\Embarcadero\Alexandria\fmx;..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\Embarcadero\Alexandria\rtl\android;$(DCC_UnitSearchPath) $(BDS)\bin\delphi_PROJECTICNS.icns true true diff --git a/Demos/ALFmxFilterEffects/_Source/ALFmxFilterEffectsDemo.dproj b/Demos/ALFmxFilterEffects/_Source/ALFmxFilterEffectsDemo.dproj index 5b2b4d9d2..7f33ffac8 100644 --- a/Demos/ALFmxFilterEffects/_Source/ALFmxFilterEffectsDemo.dproj +++ b/Demos/ALFmxFilterEffects/_Source/ALFmxFilterEffectsDemo.dproj @@ -146,7 +146,7 @@ $(BDS)\bin\delphi_PROJECTICON.ico $(BDS)\bin\delphi_PROJECTICNS.icns ALFmxFilterEffectsDemo - ..\..\..\Source;..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\Embarcadero\Alexandria\11_3\rtl\android;$(DCC_UnitSearchPath) + ..\..\..\Source;..\..\..\Embarcadero\Alexandria\fmx;..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\Embarcadero\Alexandria\rtl\android;$(DCC_UnitSearchPath) DBXSqliteDriver;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;bindengine;DataSnapClient;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;xmlrtl;DataSnapNativeClient;ibxbindings;rtl;FireDACDSDriver;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) diff --git a/Demos/ALGeoPositionSensor/_Source/ALGeoPositionSensorDemo.dproj b/Demos/ALGeoPositionSensor/_Source/ALGeoPositionSensorDemo.dproj index 5f5421350..7bd7694f1 100644 --- a/Demos/ALGeoPositionSensor/_Source/ALGeoPositionSensorDemo.dproj +++ b/Demos/ALGeoPositionSensor/_Source/ALGeoPositionSensorDemo.dproj @@ -160,7 +160,7 @@ true - ..\..\..\Source;..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\Embarcadero\Alexandria\11_3\rtl\android;$(DCC_UnitSearchPath) + ..\..\..\Source;..\..\..\Embarcadero\Alexandria\fmx;..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\Embarcadero\Alexandria\rtl\android;$(DCC_UnitSearchPath) 65001 $(BDS)\bin\delphi_PROJECTICNS.icns true diff --git a/Demos/ALLiveVideoChat/Client/_Source/ALLiveVideoChatClient.dproj b/Demos/ALLiveVideoChat/Client/_Source/ALLiveVideoChatClient.dproj index 715015c78..6506d897c 100644 --- a/Demos/ALLiveVideoChat/Client/_Source/ALLiveVideoChatClient.dproj +++ b/Demos/ALLiveVideoChat/Client/_Source/ALLiveVideoChatClient.dproj @@ -182,7 +182,7 @@ $(BDS)\bin\delphi_PROJECTICON.ico $(BDS)\bin\delphi_PROJECTICNS.icns ALLiveVideoChatClient - ..\..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\..\Embarcadero\Alexandria\11_3\rtl\android;..\..\..\..\Source;$(DCC_UnitSearchPath) + ..\..\..\..\Embarcadero\Alexandria\fmx;..\..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\..\Embarcadero\Alexandria\rtl\android;..\..\..\..\Source;$(DCC_UnitSearchPath) true true 65001 diff --git a/Demos/ALNotificationService/_Source/ALNotificationServiceDemo.dproj b/Demos/ALNotificationService/_Source/ALNotificationServiceDemo.dproj index bb6bde389..2105dc40c 100644 --- a/Demos/ALNotificationService/_Source/ALNotificationServiceDemo.dproj +++ b/Demos/ALNotificationService/_Source/ALNotificationServiceDemo.dproj @@ -182,7 +182,7 @@ false false false - ..\..\..\Source;..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\Embarcadero\Alexandria\11_3\rtl\android;$(DCC_UnitSearchPath) + ..\..\..\Source;..\..\..\Embarcadero\Alexandria\fmx;..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\Embarcadero\Alexandria\rtl\android;$(DCC_UnitSearchPath) False diff --git a/Embarcadero/Alexandria/11_2/Alexandria_11_2.patch b/Embarcadero/Alexandria/11_2/Alexandria_11_2.patch deleted file mode 100644 index ee1405eac..000000000 --- a/Embarcadero/Alexandria/11_2/Alexandria_11_2.patch +++ /dev/null @@ -1,828 +0,0 @@ -Index: fmx/FMX.Canvas.GPU.Helpers.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Canvas.GPU.Helpers.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Canvas.GPU.Helpers.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Canvas.GPU.Helpers.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Canvas.GPU.Helpers.pas (working copy) -@@ -12,11 +12,12 @@ - - interface - -+{$HINTS OFF} - {$SCOPEDENUMS ON} - - uses -- System.Types, System.UITypes, FMX.Types, FMX.Types3D, FMX.Materials.Canvas, FMX.Graphics, -- System.Math.Vectors; -+ System.Types, System.UITypes, FMX.Types, FMX.Types3D, FMX.Materials.Canvas, FMX.Graphics, -+ System.Math.Vectors, Alcinoe.FMX.Types3D; - - type - TDrawingMode = (Normal, WriteStencilInvert, ReadStencil, ClearStencil); -@@ -313,8 +314,10 @@ - - if Material <> nil then - M := Material -- else if Texture <> nil then -- M := FTexMat -+ else if Texture <> nil then begin -+ if (Texture is TalTexture) and (TalTexture(Texture).material <> nil) then M := TalTexture(Texture).material // https://quality.embarcadero.com/browse/RSP-23501 -+ else M := FTexMat -+ end - else - M := FSolidMat; - -@@ -424,7 +427,8 @@ - var - SolidDecl: TVertexDeclaration; - begin -- if FCurrentMaterial = FTexMat then -+ if (FCurrentMaterial = FTexMat) or -+ (FCurrentMaterial is TALCanvasTextureMaterial) then // https://quality.embarcadero.com/browse/RSP-23501 - begin - SetLength(SolidDecl, 3); - SolidDecl[0].Format := TVertexFormat.Vertex; -@@ -433,7 +437,8 @@ - SolidDecl[1].Offset := 12; - SolidDecl[2].Format := TVertexFormat.Color0; - SolidDecl[2].Offset := 20; -- FTexMat.Texture := FCurrentTexture; -+ if (FCurrentMaterial = FTexMat) then FTexMat.Texture := FCurrentTexture -+ else TALCanvasTextureMaterial(FCurrentMaterial).Texture := FCurrentTexture; // https://quality.embarcadero.com/browse/RSP-23501 - FContext.DrawPrimitives(TPrimitivesKind.Triangles, @FBatchVertexBuffer[0], @FBatchIndexBuffer[0], SolidDecl, - SizeOf(TVertexBufferItem), FBatchedVertices, SizeOf(TIndexBufferItem), FBatchedIndices, FCurrentMaterial, 1); - end else if FCurrentMaterial <> FSolidMat then -Index: fmx/FMX.Canvas.GPU.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Canvas.GPU.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Canvas.GPU.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Canvas.GPU.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Canvas.GPU.pas (working copy) -@@ -72,6 +72,8 @@ - procedure RegisterCanvasClasses; - procedure UnregisterCanvasClasses; - -+function CanvasHelper: TCanvasHelper; // << https://quality.embarcadero.com/browse/RSP-18797 -+ - implementation - - uses -@@ -1201,6 +1203,12 @@ - TCanvasGpu.FreeResources; - end; - -+//https://quality.embarcadero.com/browse/RSP-18797 -+function CanvasHelper: TCanvasHelper; -+begin -+ result := TCanvasGpu.FCanvasHelper; -+end; -+ - initialization - TCustomCanvasGpu.ModulateColor := $FFFFFFFF; - TCustomCanvasGpu.AlignToPixels := False; -Index: fmx/FMX.Context.GLES.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Context.GLES.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Context.GLES.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Context.GLES.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Context.GLES.pas (working copy) -@@ -11,6 +11,7 @@ - - interface - -+{$HINTS OFF} - {$SCOPEDENUMS ON} - - uses -@@ -188,7 +189,7 @@ - {$IFDEF MACOS} - Macapi.CoreFoundation, - {$ENDIF} -- FMX.Consts, FMX.Canvas.GPU, FMX.Materials, FMX.Utils; -+ FMX.Consts, FMX.Canvas.GPU, FMX.Materials, FMX.Utils, Alcinoe.FMX.Types3D; - - class procedure TGlesDiagnostic.CollectErrors; - const -@@ -1307,8 +1308,15 @@ - - if Texture = nil then - glBindTexture(GL_TEXTURE_2D, 0) -- else -+ else begin -+ {$IF defined(ANDROID)} -+ // https://quality.embarcadero.com/browse/RSP-16830 -+ if (Texture is TalTexture) and (TalTexture(Texture).material is TALCanvasExternalOESTextureMaterial) then -+ glBindTexture(GL_TEXTURE_EXTERNAL_OES, Texture.Handle) -+ else -+ {$ENDIF} - glBindTexture(GL_TEXTURE_2D, Texture.Handle); -+ end; - - glUniform1i(Variable.Index, Variable.TextureUnit); - glActiveTexture(GL_TEXTURE0); -Index: fmx/FMX.Controls.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Controls.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Controls.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Controls.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Controls.pas (working copy) -@@ -115,7 +115,7 @@ - /// Register a class to create hint instances. When a new THint instance is needed, the registered classes are invoked - /// to create the needed instance. - class procedure RegisterClass(const AClass: THintClass); -- /// Returns an instance created by the first available registered class. This method can return nil if there are no classes -+ /// Returns an instance created by the first available registered class. This method can return nil if there are no classes - /// registered or none of the registered classes can create a THint instance. - class function CreateNewInstance(const AHandle: TWindowHandle): THint; - /// Returns True if there are some THint class registered. -@@ -515,6 +515,11 @@ - procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single); virtual; - procedure MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean); virtual; - procedure MouseClick(Button: TMouseButton; Shift: TShiftState; X, Y: Single); virtual; -+ procedure ChildrenMouseDown(const AObject: TControl; Button: TMouseButton; Shift: TShiftState; X, Y: Single); virtual; // https://quality.embarcadero.com/browse/RSP-24397 -+ procedure ChildrenMouseMove(const AObject: TControl; Shift: TShiftState; X, Y: Single); virtual; // https://quality.embarcadero.com/browse/RSP-24397 -+ procedure ChildrenMouseUp(const AObject: TControl; Button: TMouseButton; Shift: TShiftState; X, Y: Single); virtual; // https://quality.embarcadero.com/browse/RSP-24397 -+ procedure ChildrenMouseEnter(const AObject: TControl); virtual; // https://quality.embarcadero.com/browse/RSP-24397 -+ procedure ChildrenMouseLeave(const AObject: TControl); virtual; // https://quality.embarcadero.com/browse/RSP-24397 - procedure KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); virtual; - procedure KeyUp(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); virtual; - procedure DialogKey(var Key: Word; Shift: TShiftState); virtual; -@@ -2204,6 +2209,7 @@ - TabStop: IControl; - ChildControl: TControl; - NeedRepaint: Boolean; -+ i: integer; // https://quality.embarcadero.com/browse/RSP-21013 - begin - DisableDisappear := True; - try -@@ -2210,7 +2216,10 @@ - if AObject is TControl then - begin - ChildControl := TControl(AObject); -- ChildControl.FUpdating := FUpdating; -+ //https://quality.embarcadero.com/browse/RSP-21013 -+ //ChildControl.FUpdating := FUpdating; -+ for I := 1 to FUpdating do -+ ChildControl.beginUpdate; - end - else - ChildControl := nil; -@@ -2250,7 +2259,8 @@ - ChildControl.TempCanvas := TempCanvas; - if FInPaintTo then - ChildControl.FInPaintTo := True; -- ChildControl.FUpdating := FUpdating; -+ //https://quality.embarcadero.com/browse/RSP-21013 -+ //ChildControl.FUpdating := FUpdating; - if not FSimpleTransform then - ChildControl.FSimpleTransform := False; - ChildControl.RecalcEnabled; -@@ -2280,8 +2290,20 @@ - var - I: Integer; - begin -- for I := 1 to AControl.FUpdating do -- AControl.EndUpdate; -+ // https://quality.embarcadero.com/browse/RSP-21013 -+ // Also no need to call EndUpdate when we are destroying -+ // AControl because at this level most of the members -+ // of Acontrol have been freed and if we call EndUpdate -+ // with this transient state it's can cause trouble if -+ // AControl have a custom overloaded EndUpdate. Also -+ // in any case endupdate will not be call for any of -+ // the childreen of AControl as the property FControls -+ // of Acontrol used in EndUpdate to enumerate all childreen -+ // of Acontrol is already freed. -+ if (not (csDestroying in ComponentState)) and -+ (not (csDestroying in AControl.ComponentState)) then -+ for I := 1 to FUpdating do -+ AControl.EndUpdate; - end; - - var -@@ -3660,7 +3682,7 @@ - Result := Touch.InteractiveGestures; - if Result = [] then - if (Parent <> nil) and Supports(Parent, IGestureControl, LGObj) then -- Result := LGObj.GetListOfInteractiveGestures; -+ Result := LGObj.GetListOfInteractiveGestures; - end; - - function TControl.GetLocked: Boolean; -@@ -4106,6 +4128,7 @@ - ApplyTriggerEffect(Self, 'IsMouseOver'); - if Assigned(FOnMouseEnter) then - FOnMouseEnter(Self); -+ if fparentControl <> nil then fparentControl.ChildrenMouseEnter(Self); // https://quality.embarcadero.com/browse/RSP-24397 - end; - - procedure TControl.DoMouseLeave; -@@ -4115,6 +4138,7 @@ - ApplyTriggerEffect(Self, 'IsMouseOver'); - if Assigned(FOnMouseLeave) then - FOnMouseLeave(Self); -+ if fparentControl <> nil then fparentControl.ChildrenMouseLeave(Self); // https://quality.embarcadero.com/browse/RSP-24397 - end; - - function TControl.GetCanFocus: Boolean; -@@ -4406,7 +4430,7 @@ - end; - - if not Handled and (FParent <> nil) and (EventInfo.GestureID <> sgiNoGesture) and Supports(Parent, IGestureControl, LGObj) then -- LGObj.CMGesture(EventInfo); -+ LGObj.CMGesture(EventInfo); - end; - - function TControl.ConvertLocalPointFrom(const AControl: TControl; const AControlLocalPoint: TPointF): TPointF; -@@ -4531,6 +4555,7 @@ - - if Assigned(FOnMouseDown) then - FOnMouseDown(Self, Button, Shift, X, Y); -+ if fparentControl <> nil then fparentControl.ChildrenMouseDown(Self, Button, Shift, X, Y); // https://quality.embarcadero.com/browse/RSP-24397 - if FAutoCapture then - Capture; - if Button = TMouseButton.mbLeft then -@@ -4553,6 +4578,7 @@ - begin - if Assigned(FOnMouseMove) then - FOnMouseMove(Self, Shift, X, Y); -+ if fparentControl <> nil then fparentControl.ChildrenMouseMove(Self, Shift, X, Y); // https://quality.embarcadero.com/browse/RSP-24397 - end; - - procedure TControl.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single); -@@ -4561,6 +4587,7 @@ - - if Assigned(FOnMouseUp) then - FOnMouseUp(Self, Button, Shift, X, Y); -+ if fparentControl <> nil then fparentControl.ChildrenMouseUp(Self, Button, Shift, X, Y); // https://quality.embarcadero.com/browse/RSP-24397 - if FPressed then - begin - FPressed := False; -@@ -4575,6 +4602,41 @@ - FOnMouseWheel(Self, Shift, WheelDelta, Handled) - end; - -+// https://quality.embarcadero.com/browse/RSP-24397 -+procedure TControl.ChildrenMouseDown(const AObject: TControl; Button: TMouseButton; Shift: TShiftState; X, Y: Single); -+begin -+ if fParentControl <> nil then -+ fParentControl.ChildrenMouseDown(AObject, Button, Shift, X, Y); -+end; -+ -+// https://quality.embarcadero.com/browse/RSP-24397 -+procedure TControl.ChildrenMouseMove(const AObject: TControl; Shift: TShiftState; X, Y: Single); -+begin -+ if fParentControl <> nil then -+ fParentControl.ChildrenMouseMove(AObject, Shift, X, Y); -+end; -+ -+// https://quality.embarcadero.com/browse/RSP-24397 -+procedure TControl.ChildrenMouseUp(const AObject: TControl; Button: TMouseButton; Shift: TShiftState; X, Y: Single); -+begin -+ if fParentControl <> nil then -+ fParentControl.ChildrenMouseUp(AObject, Button, Shift, X, Y); -+end; -+ -+// https://quality.embarcadero.com/browse/RSP-24397 -+procedure TControl.ChildrenMouseEnter(const AObject: TControl); -+begin -+ if fParentControl <> nil then -+ fParentControl.ChildrenMouseEnter(AObject); -+end; -+ -+// https://quality.embarcadero.com/browse/RSP-24397 -+procedure TControl.ChildrenMouseLeave(const AObject: TControl); -+begin -+ if fParentControl <> nil then -+ fParentControl.ChildrenMouseLeave(AObject); -+end; -+ - procedure TControl.DragEnter(const Data: TDragObject; const Point: TPointF); - var - Operation: TDragOperation; -@@ -5991,7 +6053,7 @@ - KillResourceLink; - if csLoading in ComponentState then - Exit; -- Repaint; -+ Repaint; - end; - - procedure TStyledControl.AdjustSize; -@@ -7149,7 +7211,7 @@ - var - LFontColor: TAlphaColor; - begin -- -+ - {$IFDEF LONGINT64} - IdentToAlphaColor(Reader.ReadIdent, Integer(LFontColor)); - {$ELSE !LONGINT64} -Index: fmx/FMX.Filter.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Filter.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Filter.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Filter.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Filter.pas (working copy) -@@ -11,6 +11,7 @@ - - interface - -+{$HINTS OFF} - {$SCOPEDENUMS ON} - - uses -@@ -607,7 +608,7 @@ - begin - if CompareText(FValues[I].Name, 'Output') = 0 then - begin -- if not FProcessing and FModified then -+ if not FProcessing and FModified then - Apply; - Result := TFilterManager.GetTexture(FPass); - FValues[I].Value := Result; -@@ -838,17 +839,19 @@ - - function TFilter.InputTexture: TTexture; - begin -- if TCanvasStyle.NeedGPUSurface in TCanvasManager.DefaultCanvas.GetCanvasStyle then -- Result := TContextManager.DefaultContextClass.BitmapToTexture(FInputBitmap) -- else -+ //https://quality.embarcadero.com/browse/RSP-20825 -+ //if TCanvasStyle.NeedGPUSurface in TCanvasManager.DefaultCanvas.GetCanvasStyle then -+ // Result := TContextManager.DefaultContextClass.BitmapToTexture(FInputBitmap) -+ //else - Result := FInput; - end; - - function TFilter.TargetTexture: TTexture; - begin -- if TCanvasStyle.NeedGPUSurface in TCanvasManager.DefaultCanvas.GetCanvasStyle then -- Result := TContextManager.DefaultContextClass.BitmapToTexture(FTargetBitmap) -- else -+ //https://quality.embarcadero.com/browse/RSP-20825 -+ //if TCanvasStyle.NeedGPUSurface in TCanvasManager.DefaultCanvas.GetCanvasStyle then -+ // Result := TContextManager.DefaultContextClass.BitmapToTexture(FTargetBitmap) -+ //else - Result := FTarget; - end; - -Index: fmx/FMX.Forms.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Forms.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Forms.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Forms.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Forms.pas (working copy) -@@ -9,6 +9,7 @@ - - unit FMX.Forms; - -+{$HINTS OFF} - {$MINENUMSIZE 4} - {$H+} - -@@ -4362,7 +4363,10 @@ - - procedure TCommonCustomForm.SetHovered(const Value: IControl); - begin -- if (Value <> FHovered) then -+ //https://quality.embarcadero.com/browse/RSP-36612 -+ if ((Value <> nil) and (FHovered = nil)) or -+ ((Value = nil) and (FHovered <> nil)) or -+ ((Value <> nil) and (FHovered <> nil) and (Value.GetObject <> FHovered.GetObject)) then - begin - if FHovered <> nil then - begin -@@ -4810,7 +4814,10 @@ - LControl := AControl - else - LControl := nil; -- if LControl <> FLastHinted then -+ //https://quality.embarcadero.com/browse/RSP-36612 -+ if ((LControl <> nil) and (FLastHinted = nil)) or -+ ((LControl = nil) and (FLastHinted <> nil)) or -+ ((LControl <> nil) and (FLastHinted <> nil) and (LControl.GetObject <> FLastHinted.GetObject)) then - begin - if Application.ShowHint and (LControl <> nil) then - begin -@@ -5587,7 +5594,10 @@ - - procedure TCommonCustomForm.SetCaptured(const Value: IControl); - begin -- if FCaptured <> Value then -+ //https://quality.embarcadero.com/browse/RSP-36612 -+ if ((Value <> nil) and (FCaptured = nil)) or -+ ((Value = nil) and (FCaptured <> nil)) or -+ ((Value <> nil) and (FCaptured <> nil) and (Value.GetObject <> FCaptured.GetObject)) then - begin - if FCaptured <> nil then - begin -@@ -5881,7 +5891,10 @@ - - procedure TCommonCustomForm.SetActiveControl(const AControl: IControl); - begin -- if AControl <> FActiveControl then -+ //https://quality.embarcadero.com/browse/RSP-36612 -+ if ((AControl <> nil) and (FActiveControl = nil)) or -+ ((AControl = nil) and (FActiveControl <> nil)) or -+ ((AControl <> nil) and (FActiveControl <> nil) and (AControl.GetObject <> FActiveControl.GetObject)) then - begin - if FActiveControl <> nil then - FActiveControl.RemoveFreeNotify(Self); -Index: fmx/FMX.Graphics.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Graphics.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Graphics.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Graphics.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Graphics.pas (working copy) -@@ -14,6 +14,7 @@ - - interface - -+{$HINTS OFF} - {$SCOPEDENUMS ON} - - uses -Index: fmx/FMX.Platform.iOS.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Platform.iOS.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Platform.iOS.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Platform.iOS.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Platform.iOS.pas (working copy) -@@ -1,4 +1,4 @@ --{*******************************************************} -+{*******************************************************} - { } - { Delphi FireMonkey Platform } - { } -@@ -1522,7 +1522,13 @@ - WindowManager.NativeWindow.makeKeyAndVisible; - - // Post initialization -- PlatformCocoaTouch.HandleApplicationEvent(TApplicationEvent.FinishedLaunching, nil); -+ // https://quality.embarcadero.com/browse/RSP-40351 -+ Var LContext := TiOSOpenApplicationContext.Create(string.Empty, string.Empty, options); -+ Try -+ PlatformCocoaTouch.HandleApplicationEvent(TApplicationEvent.FinishedLaunching, LContext); -+ finally -+ LContext.Free; -+ End; - FMX.Forms.Application.RealCreateForms; - TiOSHelper.CurrentDevice.beginGeneratingDeviceOrientationNotifications; - finally -Index: fmx/FMX.Platform.UI.Android.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Platform.UI.Android.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Platform.UI.Android.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Platform.UI.Android.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Platform.UI.Android.pas (working copy) -@@ -26,7 +26,7 @@ - TAndroidMotionManager = class; - TTextServiceAndroid = class; - -- TRender = class(TJavaLocal, JRunnable) -+ TRender = class(TJavaLocal, JChoreographer_FrameCallback) // https://quality.embarcadero.com/browse/RSP-38660 - private - [Weak] FContext: T; - FIsNeededUpdate: Boolean; -@@ -41,14 +41,14 @@ - /// Posts event to event bus for future rendering. - procedure PostRender; - -- { JRunnable } -- procedure run; cdecl; -+ { JChoreographer_FrameCallback } // https://quality.embarcadero.com/browse/RSP-38660 -+ procedure doFrame(frameTimeNanos: Int64); cdecl; // https://quality.embarcadero.com/browse/RSP-38660 - public - property Context: T read FContext; - end; - - /// Render of form. It is responsible for drawing FireMonkey form on native Surface. -- TFormRender = class(TRender, JRunnable) -+ TFormRender = class(TRender, JChoreographer_FrameCallback) // https://quality.embarcadero.com/browse/RSP-38660 - public - /// Renders form Immediately. - procedure Render; override; -@@ -2737,7 +2737,7 @@ - begin - TMessageManager.DefaultManager.Unsubscribe(TApplicationEventMessage, ApplicationEventHandler); - AtomicIncrement(FRefCount); -- TAndroidHelper.MainHandler.removeCallbacks(Self); -+ TJChoreographer.JavaClass.getInstance.removeFrameCallback(Self); // https://quality.embarcadero.com/browse/RSP-38660 - AtomicDecrement(FRefCount); - inherited; - end; -@@ -2747,7 +2747,7 @@ - if not FIsNeededUpdate then - begin - FIsNeededUpdate := True; -- TAndroidHelper.MainHandler.post(Self); -+ TJChoreographer.JavaClass.getInstance.postFrameCallback(Self); // https://quality.embarcadero.com/browse/RSP-38660 - end; - end; - -@@ -2755,7 +2755,7 @@ - begin - end; - --procedure TRender.run; -+procedure TRender.doFrame(frameTimeNanos: Int64); // https://quality.embarcadero.com/browse/RSP-38660 - begin - Render; - FIsNeededUpdate := False; -Index: fmx/FMX.Presentation.Android.Style.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.Presentation.Android.Style.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.Presentation.Android.Style.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.Presentation.Android.Style.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.Presentation.Android.Style.pas (working copy) -@@ -71,7 +71,7 @@ - end; - - /// Render of native view. -- TAndroidPresentationRender = class(TRender, JRunnable) -+ TAndroidPresentationRender = class(TRender, JChoreographer_FrameCallback) - public - procedure Render; override; - end; -Index: fmx/FMX.VirtualKeyboard.Android.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/fmx/FMX.VirtualKeyboard.Android.pas b/Embarcadero/Alexandria/11_2/fmx/FMX.VirtualKeyboard.Android.pas ---- a/Embarcadero/Alexandria/11_2/fmx/FMX.VirtualKeyboard.Android.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/fmx/FMX.VirtualKeyboard.Android.pas (working copy) -@@ -215,8 +215,15 @@ - VKRect.TopLeft := ConvertPixelToPoint(TPointF.Create(newFrame.Left, newFrame.Top)).Round; - VKRect.BottomRight := ConvertPixelToPoint(TPointF.Create(newFrame.Right, newFrame.Bottom)).Round; - -- if (FNeedNotifyAboutFrameChanges or ((MainActivity.getVirtualKeyboard.isVirtualKeyboardShown) and (VKRect.Height > 0))) -- and (FPreviousVKRect <> VKRect) then -+ // https://quality.embarcadero.com/browse/RSP-24737 -+ // I made the conclusion that the event onVirtualKeyboardWillHidden and onVirtualKeyboardWillShown -+ // are inconsistent. often the onVirtualKeyboardWillHidden is not fired (for exemple when you -+ // click on the return key of the keybord in the bottom left) and sometime (more hard to reproduce -+ // but I guarantee I see it) the onVirtualKeyboardWillShown is not fired. But what seam consistant -+ // is the fire to this function onVirtualKeyboardFrameChanged with good value for VKRect -+ // So I decide to only take care of this event -+ -+ if (FPreviousVKRect <> VKRect) then - try - FKeyboardService.SendNotificationAboutKeyboardEvent(VKRect); - FPreviousVKRect := VKRect; -Index: rtl/android/Androidapi.JNI.App.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/rtl/android/Androidapi.JNI.App.pas b/Embarcadero/Alexandria/11_2/rtl/android/Androidapi.JNI.App.pas ---- a/Embarcadero/Alexandria/11_2/rtl/android/Androidapi.JNI.App.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/rtl/android/Androidapi.JNI.App.pas (working copy) -@@ -16,7 +16,8 @@ - Androidapi.JNI.JavaTypes, - Androidapi.JNI.Os, - Androidapi.JNI.Util, -- Androidapi.JNI.Widget; -+ Androidapi.JNI.Widget, -+ Androidapi.JNI.Net; // https://quality.embarcadero.com/browse/RSP-39511 - - type - // ===== Forward declarations ===== -@@ -76,6 +77,20 @@ - - // ===== Interface declarations ===== - -+ // https://quality.embarcadero.com/browse/RSP-39511 -+ // This dummy class is just to avoid circular reference -+ JAudioAttributesClass = interface(JObjectClass) -+ ['{FDBDFCB3-4B3F-4E1B-9007-4E5B9EA6546A}'] -+ end; -+ -+ // https://quality.embarcadero.com/browse/RSP-39511 -+ // This dummy class is just to avoid circular reference -+ [JavaSignature('android/media/AudioAttributes')] -+ JAudioAttributes = interface(JObject) -+ ['{CEC09B65-8360-46BD-A5E8-780E4927C9AA}'] -+ end; -+ TJAudioAttributes = class(TJavaGenericImport) end; -+ - JActionBarClass = interface(JObjectClass) - ['{C1A41981-8687-4794-91A5-AA384F60A546}'] - {class} function _GetDISPLAY_HOME_AS_UP: Integer; cdecl; -@@ -1469,7 +1484,7 @@ - - JNotificationClass = interface(JObjectClass) - ['{4584515F-7E22-49A9-A55B-A6DE3BFD7E1C}'] -- //{class} function _GetAUDIO_ATTRIBUTES_DEFAULT: JAudioAttributes; cdecl; -+ {class} function _GetAUDIO_ATTRIBUTES_DEFAULT: JAudioAttributes; cdecl; // https://quality.embarcadero.com/browse/RSP-39511 - {class} function _GetBADGE_ICON_LARGE: Integer; cdecl; - {class} function _GetBADGE_ICON_NONE: Integer; cdecl; - {class} function _GetBADGE_ICON_SMALL: Integer; cdecl; -@@ -1553,7 +1568,7 @@ - {class} function init: JNotification; cdecl; overload; - {class} function init(icon: Integer; tickerText: JCharSequence; when: Int64): JNotification; cdecl; overload;//Deprecated - {class} function init(parcel: JParcel): JNotification; cdecl; overload; -- //{class} property AUDIO_ATTRIBUTES_DEFAULT: JAudioAttributes read _GetAUDIO_ATTRIBUTES_DEFAULT; -+ {class} property AUDIO_ATTRIBUTES_DEFAULT: JAudioAttributes read _GetAUDIO_ATTRIBUTES_DEFAULT; // https://quality.embarcadero.com/browse/RSP-39511 - {class} property BADGE_ICON_LARGE: Integer read _GetBADGE_ICON_LARGE; - {class} property BADGE_ICON_NONE: Integer read _GetBADGE_ICON_NONE; - {class} property BADGE_ICON_SMALL: Integer read _GetBADGE_ICON_SMALL; -@@ -1813,7 +1828,7 @@ - procedure setLockscreenVisibility(lockscreenVisibility: Integer); cdecl; - procedure setName(name: JCharSequence); cdecl; - procedure setShowBadge(showBadge: Boolean); cdecl; -- //procedure setSound(sound: Jnet_Uri; audioAttributes: JAudioAttributes); cdecl; -+ procedure setSound(sound: Jnet_Uri; audioAttributes: JAudioAttributes); cdecl; // https://quality.embarcadero.com/browse/RSP-39511 - procedure setVibrationPattern(vibrationPattern: TJavaArray); cdecl; - function shouldShowLights: Boolean; cdecl; - function shouldVibrate: Boolean; cdecl; -@@ -2276,6 +2291,7 @@ - - procedure RegisterTypes; - begin -+ TRegTypes.RegisterType('Androidapi.JNI.App.JAudioAttributes', TypeInfo(Androidapi.JNI.App.JAudioAttributes)); // dummy class to avoid circular reference - https://quality.embarcadero.com/browse/RSP-39511 - TRegTypes.RegisterType('Androidapi.JNI.App.JActionBar', TypeInfo(Androidapi.JNI.App.JActionBar)); - TRegTypes.RegisterType('Androidapi.JNI.App.JActionBar_LayoutParams', TypeInfo(Androidapi.JNI.App.JActionBar_LayoutParams)); - TRegTypes.RegisterType('Androidapi.JNI.App.JActionBar_OnMenuVisibilityListener', TypeInfo(Androidapi.JNI.App.JActionBar_OnMenuVisibilityListener)); -Index: rtl/ios/iOSapi.AVFoundation.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.AVFoundation.pas b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.AVFoundation.pas ---- a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.AVFoundation.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.AVFoundation.pas (working copy) -@@ -730,6 +730,8 @@ - function timedMetadata: NSArray; cdecl; - function tracks: NSArray; cdecl; - function videoComposition: AVVideoComposition; cdecl; -+ procedure addOutput(output: AVPlayerItemOutput); cdecl; // https://quality.embarcadero.com/browse/RSP-16853 -+ procedure removeOutput(output: AVPlayerItemOutput); cdecl; // https://quality.embarcadero.com/browse/RSP-16853 - end; - TAVPlayerItem = class(TOCGenericImport) end; - -Index: rtl/ios/iOSapi.CoreImage.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.CoreImage.pas b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.CoreImage.pas ---- a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.CoreImage.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.CoreImage.pas (working copy) -@@ -218,8 +218,25 @@ - end; - TCIFaceFeature = class(TOCGenericImport) end; - -+function kCIInputImageKey: NSString; // https://quality.embarcadero.com/browse/RSP-19878 -+function kCIInputRadiusKey: NSString; // https://quality.embarcadero.com/browse/RSP-19878 - -- - implementation - -+// https://quality.embarcadero.com/browse/RSP-19878 -+const -+ CoreImageFwk: string = '/System/Library/Frameworks/CoreImage.framework/CoreImage'; -+ -+// https://quality.embarcadero.com/browse/RSP-19878 -+function kCIInputImageKey: NSString; -+begin -+ result := CocoaNSStringConst(CoreImageFwk, 'kCIInputImageKey'); -+end; -+ -+// https://quality.embarcadero.com/browse/RSP-19878 -+function kCIInputRadiusKey: NSString; -+begin -+ result := CocoaNSStringConst(CoreImageFwk, 'kCIInputRadiusKey'); -+end; -+ - end. -Index: rtl/ios/iOSapi.CoreLocation.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.CoreLocation.pas b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.CoreLocation.pas ---- a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.CoreLocation.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.CoreLocation.pas (working copy) -@@ -33,7 +33,7 @@ - kCLAuthorizationStatusNotDetermined = 0; - kCLAuthorizationStatusRestricted = 1; - kCLAuthorizationStatusAuthorizedAlways = kCLAuthorizationStatusAuthorized ; -- kCLAuthorizationStatusAuthorizedWhenInUse = 4; -+ kCLAuthorizationStatusAuthorizedWhenInUse = 4; - kCLErrorDenied = 1; - kCLErrorGeocodeCanceled = 10; - kCLErrorGeocodeFoundNoResult = 8; -@@ -110,6 +110,7 @@ - - CLPlacemark = interface; - CLRegion = interface; -+ CLVisit = interface; // https://quality.embarcadero.com/browse/RSP-18621 - CLLocationManager = interface; - CLGeocoder = interface; - CLHeading = interface; -@@ -144,6 +145,8 @@ - procedure locationManagerDidResumeLocationUpdates(manager: CLLocationManager); cdecl; - [MethodName('locationManager:didFinishDeferredUpdatesWithError:')] - procedure locationManagerDidFinishDeferredUpdatesWithError(manager: CLLocationManager; error: NSError); cdecl; -+ [MethodName('locationManager:didVisit:')] // https://quality.embarcadero.com/browse/RSP-18621 -+ procedure locationManagerDidVisit(manager: CLLocationManager; visit: CLVisit); cdecl; // https://quality.embarcadero.com/browse/RSP-18621 - end; - - // ===== Interface declarations ===== -@@ -190,6 +193,19 @@ - end; - TCLRegion = class(TOCGenericImport) end; - -+ // https://quality.embarcadero.com/browse/RSP-18621 -+ CLVisitClass = interface(NSObjectClass) -+ ['{8526B69B-5AD8-4B4B-91DC-6C06474BE925}'] -+ end; -+ CLVisit = interface(NSObject) -+ ['{BB121072-B081-4C90-BB85-6FCC24DF8223}'] -+ function arrivalDate: NSDate; cdecl; -+ function departureDate: NSDate; cdecl; -+ function coordinate: CLLocationCoordinate2D; cdecl; -+ function horizontalAccuracy: CLLocationAccuracy; cdecl; -+ end; -+ TCLVisit = class(TOCGenericImport) end; -+ - CLLocationManagerClass = interface(NSObjectClass) - ['{4422C248-523F-4237-8966-2A322F58A77C}'] - {class} function authorizationStatus: CLAuthorizationStatus; cdecl; -@@ -248,6 +264,8 @@ - procedure stopRangingBeaconsInRegion(region: CLBeaconRegion); cdecl; - procedure stopUpdatingHeading; cdecl; - procedure stopUpdatingLocation; cdecl; -+ procedure startMonitoringVisits; cdecl; // https://quality.embarcadero.com/browse/RSP-18621 -+ procedure stopMonitoringVisits; cdecl; // https://quality.embarcadero.com/browse/RSP-18621 - end; - TCLLocationManager = class(TOCGenericImport) end; - -@@ -348,7 +366,7 @@ - - CLCircularRegion = interface(CLRegion) - ['{FF4DCF91-376B-41BB-B60A-880BEBB5B4EE}'] -- function initWithCenter(center: CLLocationCoordinate2D; radius: CLLocationDistance; identifier: NSString): Pointer; cdecl; -+ function initWithCenter(center: CLLocationCoordinate2D; radius: CLLocationDistance; identifier: pointer): Pointer; cdecl; // https://quality.embarcadero.com/browse/RSP-15717 - function center: CLLocationCoordinate2D; cdecl; - function radius: CLLocationDistance; cdecl; - function containsCoordinate(coordinate: CLLocationCoordinate2D): Boolean; cdecl; -Index: rtl/ios/iOSapi.Foundation.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.Foundation.pas b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.Foundation.pas ---- a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.Foundation.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.Foundation.pas (working copy) -@@ -5566,8 +5566,28 @@ - downloadTask: NSURLSessionDownloadTask; didResumeAtOffset: Int64; expectedTotalBytes: Int64); cdecl; - end; - -+ //https://quality.embarcadero.com/browse/RSP-28096 -+ NSPersonNameComponentsClass = interface(NSObjectClass) -+ ['{2EDFEAC4-A0B4-4BB2-BAD9-4581B92DA4C7}'] -+ end; -+ NSPersonNameComponents = interface(NSObject) -+ ['{821B6CD5-BE9B-4708-928B-FD5CE5D12788}'] -+ procedure setNamePrefix(namePrefix: NSString); cdecl; -+ function namePrefix : NSString; cdecl; -+ procedure setGivenName(givenName: NSString); cdecl; -+ function givenName : NSString; cdecl; -+ procedure setMiddleName(middleName: NSString); cdecl; -+ function middleName : NSString; cdecl; -+ procedure setFamilyName(familyName: NSString); cdecl; -+ function familyName : NSString; cdecl; -+ procedure setNameSuffix(nameSuffix: NSString); cdecl; -+ function nameSuffix : NSString; cdecl; -+ procedure setNickname(nickname: NSString); cdecl; -+ function nickname : NSString; cdecl; -+ procedure setPhoneticRepresentation(phoneticRepresentation: NSPersonNameComponents); cdecl; -+ function phoneticRepresentation : NSPersonNameComponents; cdecl; -+ end; - -- - // Convenience method for creating an NSString from a Delphi Unicode string - function NSSTR(const Str: string): NSString; inline; deprecated 'use StrToNSStr instead'; - -Index: rtl/ios/iOSapi.Security.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.Security.pas b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.Security.pas ---- a/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.Security.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/rtl/ios/iOSapi.Security.pas (working copy) -@@ -620,6 +620,8 @@ - function kSecAttrKeyClassSymmetric: NSString; - function kSecAttrKeyTypeRSA: NSString; - function kSecAttrKeyTypeEC: NSString; -+function kSecValueRef: NSString; // https://quality.embarcadero.com/browse/RSP-20279 -+function kSecValueData: NSString; // https://quality.embarcadero.com/browse/RSP-20279 - - - implementation -@@ -1250,6 +1252,18 @@ - result := CocoaNSStringConst(libSecurity, 'kSecAttrKeyTypeEC'); - end; - -+// https://quality.embarcadero.com/browse/RSP-20279 -+function kSecValueRef: NSString; -+begin -+ result := CocoaNSStringConst(libSecurity, 'kSecValueRef'); -+end; -+ -+// https://quality.embarcadero.com/browse/RSP-20279 -+function kSecValueData: NSString; -+begin -+ result := CocoaNSStringConst(libSecurity, 'kSecValueData'); -+end; -+ - {$IF defined(IOS) and NOT defined(CPUARM)} - - initialization -Index: rtl/win/Winapi.Isapi2.pas -=================================================================== -diff --git a/Embarcadero/Alexandria/11_2/rtl/win/Winapi.Isapi2.pas b/Embarcadero/Alexandria/11_2/rtl/win/Winapi.Isapi2.pas ---- a/Embarcadero/Alexandria/11_2/rtl/win/Winapi.Isapi2.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_2/rtl/win/Winapi.Isapi2.pas (working copy) -@@ -397,7 +397,7 @@ - dwReserved: DWORD): Pointer; stdcall; - - TFilterServerSupportFunctionProc = function (var pfc{: THTTP_FILTER_CONTEXT}; -- sfReq: DWORD; pData: Pointer; ul1, ul2: DWORD): BOOL; stdcall; -+ sfReq: DWORD; pData: Pointer; ul1, ul2: ULONG_PTR): BOOL; stdcall; // https://quality.embarcadero.com/browse/RSP-33754 - - PHTTP_FILTER_CONTEXT = ^THTTP_FILTER_CONTEXT; - THTTP_FILTER_CONTEXT = record diff --git a/Embarcadero/Alexandria/11_2/Update.bat b/Embarcadero/Alexandria/11_2/Update.bat deleted file mode 100644 index ff667c3cb..000000000 --- a/Embarcadero/Alexandria/11_2/Update.bat +++ /dev/null @@ -1,94 +0,0 @@ -@echo off - -FOR /F "usebackq tokens=3*" %%A IN (`reg query "HKCU\Software\Embarcadero\BDS\22.0" /v RootDir`) DO set EmbSourceDir=%%A %%B -set EmbSourceDir=%EmbSourceDir:~0,-1%source - -FOR %%a IN ("%%~dp0") DO set "ProjectDir=%%~dpa" -IF %ProjectDir:~-1%==\ SET ProjectDir=%ProjectDir:~0,-1% - -if not exist "%ProjectDir%\..\..\..\Source\Alcinoe.inc" goto ERROR - -SET FileName=%ProjectDir%\fmx -IF EXIST "%FileName%" rmdir /s /q "%FileName%" -IF EXIST "%FileName%" goto ERROR -mkdir "%FileName%" - -SET FileName=%ProjectDir%\rtl -IF EXIST "%FileName%" rmdir /s /q "%FileName%" -IF EXIST "%FileName%" goto ERROR -mkdir "%FileName%" -mkdir "%FileName%\ios" -mkdir "%FileName%\android" -mkdir "%FileName%\win" -mkdir "%FileName%\net" - -echo Copy "%EmbSourceDir%\fmx" to "%ProjectDir%\fmx" -xcopy "%EmbSourceDir%\fmx" "%ProjectDir%\fmx" -IF ERRORLEVEL 1 goto ERROR -echo. - -IF EXIST "%EmbSourceDir%\rtl\ios" ( - echo Copy "%EmbSourceDir%\rtl\ios" to "%ProjectDir%\rtl\ios" - xcopy "%EmbSourceDir%\rtl\ios" "%ProjectDir%\rtl\ios" - IF ERRORLEVEL 1 goto ERROR - echo. -) - -IF EXIST "%EmbSourceDir%\rtl\android" ( - echo Copy "%EmbSourceDir%\rtl\android" to "%ProjectDir%\rtl\android" - xcopy "%EmbSourceDir%\rtl\android" "%ProjectDir%\rtl\android" - IF ERRORLEVEL 1 goto ERROR - echo. -) - -echo Copy "%EmbSourceDir%\rtl\win" to "%ProjectDir%\rtl\win" -xcopy "%EmbSourceDir%\rtl\win" "%ProjectDir%\rtl\win" -IF ERRORLEVEL 1 goto ERROR -echo. - -echo Copy "%EmbSourceDir%\rtl\net" to "%ProjectDir%\rtl\net" -xcopy "%EmbSourceDir%\rtl\net" "%ProjectDir%\rtl\net" -IF ERRORLEVEL 1 goto ERROR -echo. - -echo Patch the source code -CHDIR ".\..\..\..\" -git apply --ignore-space-change --ignore-whitespace .\Embarcadero\Alexandria\11_2\Alexandria_11_2.patch -v -CHDIR "%ProjectDir%" -echo. - -FOR %%a IN ("%ProjectDir%\rtl\win\*") DO IF /i NOT "%%~nxa"=="Winapi.Isapi2.pas" DEL "%%a" - -for /f "delims=" %%a IN ('dir /b /s %ProjectDir%\*.pas') do Call :ADD_HINTS_OFF "%%a" - -goto FINISHED - - -:ADD_HINTS_OFF - -REM %~1 the pas file - -SET TmpFileName=%ProjectDir%\~temp.pas -IF EXIST "%TmpFileName%" del "%TmpFileName%" -IF EXIST "%TmpFileName%" goto ERROR -certutil -dump "%~1" | findstr /C:"ef bb bf" > nul -if %errorlevel% equ 0 ( - echo {$HINTS OFF}{>"%TmpFileName%" -) else ( - echo {$HINTS OFF}>"%TmpFileName%" -) -type "%~1">>"%TmpFileName%" -del "%~1" -move "%TmpFileName%" "%~1" >nul - -EXIT /B 0 - -:FINISHED -@echo Finished -PAUSE -goto EXIT - -:ERROR -pause - -:EXIT \ No newline at end of file diff --git a/Embarcadero/Alexandria/11_3/Update.bat b/Embarcadero/Alexandria/11_3/Update.bat deleted file mode 100644 index 33ebdffc9..000000000 --- a/Embarcadero/Alexandria/11_3/Update.bat +++ /dev/null @@ -1,94 +0,0 @@ -@echo off - -FOR /F "usebackq tokens=3*" %%A IN (`reg query "HKCU\Software\Embarcadero\BDS\22.0" /v RootDir`) DO set EmbSourceDir=%%A %%B -set EmbSourceDir=%EmbSourceDir:~0,-1%source - -FOR %%a IN ("%%~dp0") DO set "ProjectDir=%%~dpa" -IF %ProjectDir:~-1%==\ SET ProjectDir=%ProjectDir:~0,-1% - -if not exist "%ProjectDir%\..\..\..\Source\Alcinoe.inc" goto ERROR - -SET FileName=%ProjectDir%\fmx -IF EXIST "%FileName%" rmdir /s /q "%FileName%" -IF EXIST "%FileName%" goto ERROR -mkdir "%FileName%" - -SET FileName=%ProjectDir%\rtl -IF EXIST "%FileName%" rmdir /s /q "%FileName%" -IF EXIST "%FileName%" goto ERROR -mkdir "%FileName%" -mkdir "%FileName%\ios" -mkdir "%FileName%\android" -mkdir "%FileName%\win" -mkdir "%FileName%\net" - -echo Copy "%EmbSourceDir%\fmx" to "%ProjectDir%\fmx" -xcopy "%EmbSourceDir%\fmx" "%ProjectDir%\fmx" -IF ERRORLEVEL 1 goto ERROR -echo. - -IF EXIST "%EmbSourceDir%\rtl\ios" ( - echo Copy "%EmbSourceDir%\rtl\ios" to "%ProjectDir%\rtl\ios" - xcopy "%EmbSourceDir%\rtl\ios" "%ProjectDir%\rtl\ios" - IF ERRORLEVEL 1 goto ERROR - echo. -) - -IF EXIST "%EmbSourceDir%\rtl\android" ( - echo Copy "%EmbSourceDir%\rtl\android" to "%ProjectDir%\rtl\android" - xcopy "%EmbSourceDir%\rtl\android" "%ProjectDir%\rtl\android" - IF ERRORLEVEL 1 goto ERROR - echo. -) - -echo Copy "%EmbSourceDir%\rtl\win" to "%ProjectDir%\rtl\win" -xcopy "%EmbSourceDir%\rtl\win" "%ProjectDir%\rtl\win" -IF ERRORLEVEL 1 goto ERROR -echo. - -echo Copy "%EmbSourceDir%\rtl\net" to "%ProjectDir%\rtl\net" -xcopy "%EmbSourceDir%\rtl\net" "%ProjectDir%\rtl\net" -IF ERRORLEVEL 1 goto ERROR -echo. - -echo Patch the source code -CHDIR ".\..\..\..\" -git apply --ignore-space-change --ignore-whitespace .\Embarcadero\Alexandria\11_3\Alexandria_11_3.patch -v -CHDIR "%ProjectDir%" -echo. - -FOR %%a IN ("%ProjectDir%\rtl\win\*") DO IF /i NOT "%%~nxa"=="Winapi.Isapi2.pas" DEL "%%a" - -for /f "delims=" %%a IN ('dir /b /s %ProjectDir%\*.pas') do Call :ADD_HINTS_OFF "%%a" - -goto FINISHED - - -:ADD_HINTS_OFF - -REM %~1 the pas file - -SET TmpFileName=%ProjectDir%\~temp.pas -IF EXIST "%TmpFileName%" del "%TmpFileName%" -IF EXIST "%TmpFileName%" goto ERROR -certutil -dump "%~1" | findstr /C:"ef bb bf" > nul -if %errorlevel% equ 0 ( - echo {$HINTS OFF}{>"%TmpFileName%" -) else ( - echo {$HINTS OFF}>"%TmpFileName%" -) -type "%~1">>"%TmpFileName%" -del "%~1" -move "%TmpFileName%" "%~1" >nul - -EXIT /B 0 - -:FINISHED -@echo Finished -PAUSE -goto EXIT - -:ERROR -pause - -:EXIT \ No newline at end of file diff --git a/Embarcadero/Alexandria/11_3/Alexandria_11_3.patch b/Embarcadero/Alexandria/Alexandria.patch similarity index 89% rename from Embarcadero/Alexandria/11_3/Alexandria_11_3.patch rename to Embarcadero/Alexandria/Alexandria.patch index 9f8b6e0c6..eb63f59b6 100644 --- a/Embarcadero/Alexandria/11_3/Alexandria_11_3.patch +++ b/Embarcadero/Alexandria/Alexandria.patch @@ -1,8 +1,8 @@ -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.D2D.pas +Index: Embarcadero/Alexandria/fmx/FMX.Canvas.D2D.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.D2D.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.D2D.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.D2D.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.D2D.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Canvas.D2D.pas b/Embarcadero/Alexandria/fmx/FMX.Canvas.D2D.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Canvas.D2D.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Canvas.D2D.pas (working copy) @@ -2897,8 +2897,10 @@ HitTestPoint := APoint - TopLeft - TPointF.Create(Padding.Left, Padding.Top); FLayout.HitTestPoint(HitTestPoint.X, HitTestPoint.Y, TrailingHit, Inside, HitTestMetrics); @@ -16,11 +16,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.D2D.pas b/Embarcadero/Al end else if ((APoint.X < LRect.Left) or SameValue(APoint.X, LRect.Left, TEpsilon.Position)) and ((APoint.Y > LRect.Top) or SameValue(APoint.Y, LRect.Top, TEpsilon.Position)) and -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.Helpers.pas +Index: Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.Helpers.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.Helpers.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.Helpers.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.Helpers.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.Helpers.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.Helpers.pas b/Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.Helpers.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.Helpers.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.Helpers.pas (working copy) @@ -15,8 +15,8 @@ {$SCOPEDENUMS ON} @@ -65,11 +65,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.Helpers.pas b/Embarc FContext.DrawPrimitives(TPrimitivesKind.Triangles, @FBatchVertexBuffer[0], @FBatchIndexBuffer[0], SolidDecl, SizeOf(TVertexBufferItem), FBatchedVertices, SizeOf(TIndexBufferItem), FBatchedIndices, FCurrentMaterial, 1); end else if FCurrentMaterial <> FSolidMat then -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.pas +Index: Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.pas b/Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Canvas.GPU.pas (working copy) @@ -72,6 +72,8 @@ procedure RegisterCanvasClasses; procedure UnregisterCanvasClasses; @@ -92,11 +92,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Canvas.GPU.pas b/Embarcadero/Al initialization TCustomCanvasGpu.ModulateColor := $FFFFFFFF; TCustomCanvasGpu.AlignToPixels := False; -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Context.GLES.pas +Index: Embarcadero/Alexandria/fmx/FMX.Context.GLES.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Context.GLES.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Context.GLES.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Context.GLES.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Context.GLES.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Context.GLES.pas b/Embarcadero/Alexandria/fmx/FMX.Context.GLES.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Context.GLES.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Context.GLES.pas (working copy) @@ -188,7 +188,7 @@ {$IFDEF MACOS} Macapi.CoreFoundation, @@ -123,11 +123,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Context.GLES.pas b/Embarcadero/ glUniform1i(Variable.Index, Variable.TextureUnit); glActiveTexture(GL_TEXTURE0); -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Controls.pas +Index: Embarcadero/Alexandria/fmx/FMX.Controls.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Controls.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Controls.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Controls.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Controls.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Controls.pas b/Embarcadero/Alexandria/fmx/FMX.Controls.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Controls.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Controls.pas (working copy) @@ -115,7 +115,7 @@ /// Register a class to create hint instances. When a new THint instance is needed, the registered classes are invoked /// to create the needed instance. @@ -395,11 +395,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Controls.pas b/Embarcadero/Alex {$IFDEF LONGINT64} IdentToAlphaColor(Reader.ReadIdent, Integer(LFontColor)); {$ELSE !LONGINT64} -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Filter.pas +Index: Embarcadero/Alexandria/fmx/FMX.Filter.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Filter.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Filter.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Filter.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Filter.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Filter.pas b/Embarcadero/Alexandria/fmx/FMX.Filter.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Filter.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Filter.pas (working copy) @@ -607,7 +607,7 @@ begin if CompareText(FValues[I].Name, 'Output') = 0 then @@ -435,11 +435,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Filter.pas b/Embarcadero/Alexan Result := FTarget; end; -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Forms.pas +Index: Embarcadero/Alexandria/fmx/FMX.Forms.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Forms.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Forms.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Forms.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Forms.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Forms.pas b/Embarcadero/Alexandria/fmx/FMX.Forms.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Forms.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Forms.pas (working copy) @@ -4374,7 +4374,10 @@ procedure TCommonCustomForm.SetHovered(const Value: IControl); @@ -488,11 +488,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Forms.pas b/Embarcadero/Alexand begin if FActiveControl <> nil then FActiveControl.RemoveFreeNotify(Self); -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Platform.iOS.pas +Index: Embarcadero/Alexandria/fmx/FMX.Platform.iOS.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.iOS.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.iOS.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.iOS.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.iOS.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Platform.iOS.pas b/Embarcadero/Alexandria/fmx/FMX.Platform.iOS.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Platform.iOS.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Platform.iOS.pas (working copy) @@ -1,4 +1,4 @@ -{*******************************************************} +{*******************************************************} @@ -514,11 +514,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.iOS.pas b/Embarcadero/ FMX.Forms.Application.RealCreateForms; TiOSHelper.CurrentDevice.beginGeneratingDeviceOrientationNotifications; finally -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Platform.Screen.Android.pas +Index: Embarcadero/Alexandria/fmx/FMX.Platform.Screen.Android.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.Screen.Android.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.Screen.Android.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.Screen.Android.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.Screen.Android.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Platform.Screen.Android.pas b/Embarcadero/Alexandria/fmx/FMX.Platform.Screen.Android.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Platform.Screen.Android.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Platform.Screen.Android.pas (working copy) @@ -258,9 +258,11 @@ function ScaleRect(const ARect: TRect; const AScale: Single): TRect; begin @@ -533,11 +533,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.Screen.Android.pas b/E end; function CalculatePhysicalWorkarea(const ANativeDisplay: JDisplay; const APhysicalBounds: TRect): TRect; -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Platform.UI.Android.pas +Index: Embarcadero/Alexandria/fmx/FMX.Platform.UI.Android.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.UI.Android.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.UI.Android.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.UI.Android.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.UI.Android.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Platform.UI.Android.pas b/Embarcadero/Alexandria/fmx/FMX.Platform.UI.Android.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Platform.UI.Android.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Platform.UI.Android.pas (working copy) @@ -26,7 +26,7 @@ TAndroidMotionManager = class; TTextServiceAndroid = class; @@ -612,11 +612,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Platform.UI.Android.pas b/Embar begin Render; FIsNeededUpdate := False; -Index: Embarcadero/Alexandria/11_3/fmx/FMX.Presentation.Android.Style.pas +Index: Embarcadero/Alexandria/fmx/FMX.Presentation.Android.Style.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Presentation.Android.Style.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.Presentation.Android.Style.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.Presentation.Android.Style.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.Presentation.Android.Style.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.Presentation.Android.Style.pas b/Embarcadero/Alexandria/fmx/FMX.Presentation.Android.Style.pas +--- a/Embarcadero/Alexandria/fmx/FMX.Presentation.Android.Style.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.Presentation.Android.Style.pas (working copy) @@ -71,7 +71,7 @@ end; @@ -626,11 +626,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.Presentation.Android.Style.pas public procedure Render; override; end; -Index: Embarcadero/Alexandria/11_3/fmx/FMX.StrokeBuilder.pas +Index: Embarcadero/Alexandria/fmx/FMX.StrokeBuilder.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.StrokeBuilder.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.StrokeBuilder.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.StrokeBuilder.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.StrokeBuilder.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.StrokeBuilder.pas b/Embarcadero/Alexandria/fmx/FMX.StrokeBuilder.pas +--- a/Embarcadero/Alexandria/fmx/FMX.StrokeBuilder.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.StrokeBuilder.pas (working copy) @@ -88,8 +88,10 @@ implementation @@ -1710,11 +1710,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.StrokeBuilder.pas b/Embarcadero FinalizeArrays; end; -Index: Embarcadero/Alexandria/11_3/fmx/FMX.VirtualKeyboard.Android.pas +Index: Embarcadero/Alexandria/fmx/FMX.VirtualKeyboard.Android.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.VirtualKeyboard.Android.pas b/Embarcadero/Alexandria/11_3/fmx/FMX.VirtualKeyboard.Android.pas ---- a/Embarcadero/Alexandria/11_3/fmx/FMX.VirtualKeyboard.Android.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/fmx/FMX.VirtualKeyboard.Android.pas (working copy) +diff --git a/Embarcadero/Alexandria/fmx/FMX.VirtualKeyboard.Android.pas b/Embarcadero/Alexandria/fmx/FMX.VirtualKeyboard.Android.pas +--- a/Embarcadero/Alexandria/fmx/FMX.VirtualKeyboard.Android.pas (revision 1) ++++ b/Embarcadero/Alexandria/fmx/FMX.VirtualKeyboard.Android.pas (working copy) @@ -218,8 +218,15 @@ VKRect.TopLeft := ConvertPixelToPoint(TPointF.Create(newFrame.Left, newFrame.Top)).Round; VKRect.BottomRight := ConvertPixelToPoint(TPointF.Create(newFrame.Right, newFrame.Bottom)).Round; @@ -1733,11 +1733,11 @@ diff --git a/Embarcadero/Alexandria/11_3/fmx/FMX.VirtualKeyboard.Android.pas b/E try FKeyboardService.SendNotificationAboutKeyboardEvent(VKRect); FPreviousVKRect := VKRect; -Index: Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.App.pas +Index: Embarcadero/Alexandria/rtl/android/Androidapi.JNI.App.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.App.pas b/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.App.pas ---- a/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.App.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.App.pas (working copy) +diff --git a/Embarcadero/Alexandria/rtl/android/Androidapi.JNI.App.pas b/Embarcadero/Alexandria/rtl/android/Androidapi.JNI.App.pas +--- a/Embarcadero/Alexandria/rtl/android/Androidapi.JNI.App.pas (revision 1) ++++ b/Embarcadero/Alexandria/rtl/android/Androidapi.JNI.App.pas (working copy) @@ -16,7 +16,8 @@ Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, @@ -1804,11 +1804,11 @@ diff --git a/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.App.pas b/Em TRegTypes.RegisterType('Androidapi.JNI.App.JActionBar', TypeInfo(Androidapi.JNI.App.JActionBar)); TRegTypes.RegisterType('Androidapi.JNI.App.JActionBar_LayoutParams', TypeInfo(Androidapi.JNI.App.JActionBar_LayoutParams)); TRegTypes.RegisterType('Androidapi.JNI.App.JActionBar_OnMenuVisibilityListener', TypeInfo(Androidapi.JNI.App.JActionBar_OnMenuVisibilityListener)); -Index: Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.Location.pas +Index: Embarcadero/Alexandria/rtl/android/Androidapi.JNI.Location.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.Location.pas b/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.Location.pas ---- a/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.Location.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.Location.pas (working copy) +diff --git a/Embarcadero/Alexandria/rtl/android/Androidapi.JNI.Location.pas b/Embarcadero/Alexandria/rtl/android/Androidapi.JNI.Location.pas +--- a/Embarcadero/Alexandria/rtl/android/Androidapi.JNI.Location.pas (revision 1) ++++ b/Embarcadero/Alexandria/rtl/android/Androidapi.JNI.Location.pas (working copy) @@ -582,7 +582,9 @@ [JavaSignature('android/location/LocationListener')] JLocationListener = interface(IJavaInstance) @@ -1836,11 +1836,11 @@ diff --git a/Embarcadero/Alexandria/11_3/rtl/android/Androidapi.JNI.Location.pas {class} property KEY_LOCATION_CHANGED: JString read _GetKEY_LOCATION_CHANGED; {class} property KEY_PROVIDER_ENABLED: JString read _GetKEY_PROVIDER_ENABLED; {class} property KEY_PROXIMITY_ENTERING: JString read _GetKEY_PROXIMITY_ENTERING; -Index: Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.AVFoundation.pas +Index: Embarcadero/Alexandria/rtl/ios/iOSapi.AVFoundation.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.AVFoundation.pas b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.AVFoundation.pas ---- a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.AVFoundation.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.AVFoundation.pas (working copy) +diff --git a/Embarcadero/Alexandria/rtl/ios/iOSapi.AVFoundation.pas b/Embarcadero/Alexandria/rtl/ios/iOSapi.AVFoundation.pas +--- a/Embarcadero/Alexandria/rtl/ios/iOSapi.AVFoundation.pas (revision 1) ++++ b/Embarcadero/Alexandria/rtl/ios/iOSapi.AVFoundation.pas (working copy) @@ -730,6 +730,8 @@ function timedMetadata: NSArray; cdecl; function tracks: NSArray; cdecl; @@ -1850,11 +1850,11 @@ diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.AVFoundation.pas b/Embar end; TAVPlayerItem = class(TOCGenericImport) end; -Index: Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreImage.pas +Index: Embarcadero/Alexandria/rtl/ios/iOSapi.CoreImage.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreImage.pas b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreImage.pas ---- a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreImage.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreImage.pas (working copy) +diff --git a/Embarcadero/Alexandria/rtl/ios/iOSapi.CoreImage.pas b/Embarcadero/Alexandria/rtl/ios/iOSapi.CoreImage.pas +--- a/Embarcadero/Alexandria/rtl/ios/iOSapi.CoreImage.pas (revision 1) ++++ b/Embarcadero/Alexandria/rtl/ios/iOSapi.CoreImage.pas (working copy) @@ -218,8 +218,25 @@ end; TCIFaceFeature = class(TOCGenericImport) end; @@ -1882,11 +1882,11 @@ diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreImage.pas b/Embarcad +end; + end. -Index: Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreLocation.pas +Index: Embarcadero/Alexandria/rtl/ios/iOSapi.CoreLocation.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreLocation.pas b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreLocation.pas ---- a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreLocation.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreLocation.pas (working copy) +diff --git a/Embarcadero/Alexandria/rtl/ios/iOSapi.CoreLocation.pas b/Embarcadero/Alexandria/rtl/ios/iOSapi.CoreLocation.pas +--- a/Embarcadero/Alexandria/rtl/ios/iOSapi.CoreLocation.pas (revision 1) ++++ b/Embarcadero/Alexandria/rtl/ios/iOSapi.CoreLocation.pas (working copy) @@ -33,7 +33,9 @@ kCLAuthorizationStatusNotDetermined = 0; kCLAuthorizationStatusRestricted = 1; @@ -2096,11 +2096,11 @@ diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.CoreLocation.pas b/Embar {$IF defined(IOS) and NOT defined(CPUARM)} initialization CLModule := dlopen(MarshaledAString(libCoreLocation), RTLD_LAZY); -Index: Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Foundation.pas +Index: Embarcadero/Alexandria/rtl/ios/iOSapi.Foundation.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Foundation.pas b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Foundation.pas ---- a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Foundation.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Foundation.pas (working copy) +diff --git a/Embarcadero/Alexandria/rtl/ios/iOSapi.Foundation.pas b/Embarcadero/Alexandria/rtl/ios/iOSapi.Foundation.pas +--- a/Embarcadero/Alexandria/rtl/ios/iOSapi.Foundation.pas (revision 1) ++++ b/Embarcadero/Alexandria/rtl/ios/iOSapi.Foundation.pas (working copy) @@ -5566,8 +5566,28 @@ downloadTask: NSURLSessionDownloadTask; didResumeAtOffset: Int64; expectedTotalBytes: Int64); cdecl; end; @@ -2131,11 +2131,11 @@ diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Foundation.pas b/Embarca // Convenience method for creating an NSString from a Delphi Unicode string function NSSTR(const Str: string): NSString; inline; deprecated 'use StrToNSStr instead'; -Index: Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Security.pas +Index: Embarcadero/Alexandria/rtl/ios/iOSapi.Security.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Security.pas b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Security.pas ---- a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Security.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Security.pas (working copy) +diff --git a/Embarcadero/Alexandria/rtl/ios/iOSapi.Security.pas b/Embarcadero/Alexandria/rtl/ios/iOSapi.Security.pas +--- a/Embarcadero/Alexandria/rtl/ios/iOSapi.Security.pas (revision 1) ++++ b/Embarcadero/Alexandria/rtl/ios/iOSapi.Security.pas (working copy) @@ -622,6 +622,8 @@ function kSecAttrKeyClassSymmetric: NSString; function kSecAttrKeyTypeRSA: NSString; @@ -2164,11 +2164,11 @@ diff --git a/Embarcadero/Alexandria/11_3/rtl/ios/iOSapi.Security.pas b/Embarcade {$IF defined(IOS) and NOT defined(CPUARM)} initialization -Index: Embarcadero/Alexandria/11_3/rtl/win/Winapi.Isapi2.pas +Index: Embarcadero/Alexandria/rtl/win/Winapi.Isapi2.pas =================================================================== -diff --git a/Embarcadero/Alexandria/11_3/rtl/win/Winapi.Isapi2.pas b/Embarcadero/Alexandria/11_3/rtl/win/Winapi.Isapi2.pas ---- a/Embarcadero/Alexandria/11_3/rtl/win/Winapi.Isapi2.pas (revision 1) -+++ b/Embarcadero/Alexandria/11_3/rtl/win/Winapi.Isapi2.pas (working copy) +diff --git a/Embarcadero/Alexandria/rtl/win/Winapi.Isapi2.pas b/Embarcadero/Alexandria/rtl/win/Winapi.Isapi2.pas +--- a/Embarcadero/Alexandria/rtl/win/Winapi.Isapi2.pas (revision 1) ++++ b/Embarcadero/Alexandria/rtl/win/Winapi.Isapi2.pas (working copy) @@ -397,7 +397,7 @@ dwReserved: DWORD): Pointer; stdcall; diff --git a/Embarcadero/Alexandria/Update.bat b/Embarcadero/Alexandria/Update.bat new file mode 100644 index 000000000..3f9ddf638 --- /dev/null +++ b/Embarcadero/Alexandria/Update.bat @@ -0,0 +1,105 @@ +@echo off +SETLOCAL + +if "%ALBaseDir%"=="" ( + cls + Set Standalone=1 + set ALDelphiVersion=22.0 + call "..\..\InitEnvironment.bat" + IF ERRORLEVEL 1 goto ERROR +) + +FOR /F "usebackq tokens=3*" %%A IN (`reg query "HKCU\Software\Embarcadero\BDS\%ALDelphiVersion%" /v RootDir`) DO set EmbSourceDir=%%A %%B +set EmbSourceDir=%EmbSourceDir:~0,-1%source + +if not exist "%ALBaseDir%\Source\Alcinoe.inc" goto ERROR + +SET FileName=%ALBaseDir%\Embarcadero\Alexandria\fmx +IF EXIST "%FileName%" rmdir /s /q "%FileName%" +IF EXIST "%FileName%" goto ERROR +mkdir "%FileName%" + +SET FileName=%ALBaseDir%\Embarcadero\Alexandria\rtl +IF EXIST "%FileName%" rmdir /s /q "%FileName%" +IF EXIST "%FileName%" goto ERROR +mkdir "%FileName%" +mkdir "%FileName%\ios" +mkdir "%FileName%\android" +mkdir "%FileName%\win" +mkdir "%FileName%\net" + +echo Copy "%EmbSourceDir%\fmx" +xcopy /Q "%EmbSourceDir%\fmx" "%ALBaseDir%\Embarcadero\Alexandria\fmx" +IF ERRORLEVEL 1 goto ERROR + +IF EXIST "%EmbSourceDir%\rtl\ios" ( + echo Copy "%EmbSourceDir%\rtl\ios" + xcopy /Q "%EmbSourceDir%\rtl\ios" "%ALBaseDir%\Embarcadero\Alexandria\rtl\ios" + IF ERRORLEVEL 1 goto ERROR +) + +IF EXIST "%EmbSourceDir%\rtl\android" ( + echo Copy "%EmbSourceDir%\rtl\android" + xcopy /Q "%EmbSourceDir%\rtl\android" "%ALBaseDir%\Embarcadero\Alexandria\rtl\android" + IF ERRORLEVEL 1 goto ERROR +) + +echo Copy "%EmbSourceDir%\rtl\win" +xcopy /Q "%EmbSourceDir%\rtl\win" "%ALBaseDir%\Embarcadero\Alexandria\rtl\win" +IF ERRORLEVEL 1 goto ERROR + +echo Copy "%EmbSourceDir%\rtl\net" +xcopy /Q "%EmbSourceDir%\rtl\net" "%ALBaseDir%\Embarcadero\Alexandria\rtl\net" +IF ERRORLEVEL 1 goto ERROR + +echo Patch the locally copied source code +set PREV_DIR=%CD% +CHDIR "%ALBaseDir%" +git apply --ignore-space-change --ignore-whitespace .\Embarcadero\Alexandria\Alexandria.patch -v +CHDIR "%PREV_DIR%" + +echo Remove warnings from the copied files + +FOR %%a IN ("%ALBaseDir%\Embarcadero\Alexandria\rtl\win\*") DO IF /i NOT "%%~nxa"=="Winapi.Isapi2.pas" DEL "%%a" + +for /f "delims=" %%a IN ('dir /b /s %ALBaseDir%\Embarcadero\Alexandria\*.pas') do Call :ADD_HINTS_OFF "%%a" + +goto FINISHED + + +:ADD_HINTS_OFF + +REM %~1 the pas file + +SET TmpFileName=%ALBaseDir%\Embarcadero\Alexandria\~temp.pas +IF EXIST "%TmpFileName%" del "%TmpFileName%" +IF EXIST "%TmpFileName%" goto ERROR +certutil -dump "%~1" | findstr /C:"ef bb bf" > nul +if %errorlevel% equ 0 ( + echo {$HINTS OFF}{>"%TmpFileName%" +) else ( + echo {$HINTS OFF}>"%TmpFileName%" +) +type "%~1">>"%TmpFileName%" +del "%~1" +move "%TmpFileName%" "%~1" >nul + +EXIT /B 0 + + +REM ------------------- +REM FINISHED/ERROR/EXIT +REM ------------------- + +:FINISHED + +echo Delphi source code has been copied and patched successfully +if "%Standalone%"=="1" PAUSE +goto EXIT + +:ERROR + +PAUSE +EXIT 1 & REM without /B to Close CMD.exe in case this batch is a subroutine and the caller forget to catch the ERRORLEVEL + +:EXIT \ No newline at end of file diff --git a/README.md b/README.md index 8ba88c92a..826218eed 100644 --- a/README.md +++ b/README.md @@ -62,43 +62,40 @@ us to patch the original Delphi source files: Install Alcinoe --------------- +To set up Alcinoe, first execute [CompileAll.bat](https://github.com/MagicFoundation/Alcinoe/tree/master/CompileAll.bat). This +batch file handles a series of tasks: it retrieves and +patches the original Delphi source code, downloads the +necessary iOS/Android libraries, constructs the Alcinoe +JAR files, builds the BPL (Borland Package Library), +compiles tools from the [{alcinoe}\Tools](https://github.com/MagicFoundation/Alcinoe/tree/master/Tools/) directory, and +finally compiles all demos in the [{alcinoe}\Demos](https://github.com/MagicFoundation/Alcinoe/tree/master/Demos/) +directory. Please be aware that some demos utilize +components from [devexpress](https://www.devexpress.com/). + +If your goal is to use only the non-visual components +from Alcinoe, no further installation steps are necessary. +Just ensure to include [{alcinoe}\Source](https://github.com/MagicFoundation/Alcinoe/tree/master/Source) in your project's +search path. + +For those wanting to use Alcinoe's visual components +during design time, a few more steps are required. You +will need to install the BPL: Open Delphi, navigate to +Component > Install Packages... and select the BPL from +[{alcinoe}\Libraries\bpl\Alcinoe\Win32\\Alcinoe.bpl](https://github.com/MagicFoundation/Alcinoe/tree/master/Libraries/bpl/Alcinoe/Win32). +Also, remember to include both [{alcinoe}\Source](https://github.com/MagicFoundation/Alcinoe/tree/master/Source) and all +subdirectories from [{alcinoe}\Embarcadero\](https://github.com/MagicFoundation/Alcinoe/tree/master/Embarcadero/) +in your search path. + + +Update Alcinoe +-------------- + We need some time to rename unit/class/function names. To help you automatically perform this renaming task in your project to the latest version of Alcinoe, we provide you with the tool called CodeRenaming. You can find this tool at the following link: [CodeRenaming](https://github.com/MagicFoundation/Alcinoe/tree/master/Tools/CodeRenaming). -If you plan to use the FMX (FireMonkey) framework with -Alcinoe, you will need to patch the original Delphi -source code. To do this, you need to go to [{alcinoe}\Embarcadero\Alexandria\11_3](https://github.com/MagicFoundation/Alcinoe/tree/master/Embarcadero/Alexandria/11_3/) -and run [update.bat](https://github.com/MagicFoundation/Alcinoe/tree/master/Embarcadero/Alexandria/11_3/update.bat) -to retrieve and patch the original Delphi source code. -The batch file assumes that the original source code is -located in c:\Program Files (x86)\Embarcadero\Studio\22.0\source\ -and that you have GIT in your path. Later, you will need to -include all subdirectories located in [{alcinoe}\Embarcadero\Alexandria\11_3](https://github.com/MagicFoundation/Alcinoe/tree/master/Embarcadero/Alexandria/11_3/) -in your project search path. - -You will also need to run [CompileAll.bat](https://github.com/MagicFoundation/Alcinoe/tree/master/CompileAll.bat) -to download the iOS/Android libraries, build the -Alcinoe Jars, build the BPL, build all tools located -in [{alcinoe}\Tools](https://github.com/MagicFoundation/Alcinoe/tree/master/Tools/), -and finally build all demos located in [{alcinoe}\Demos](https://github.com/MagicFoundation/Alcinoe/tree/master/Demos/). -Note that some demos use [devexpress](https://www.devexpress.com/). - -If you don't plan to use any Alcinoe visual components at -design time, you don't need to install anything. Just add -[{alcinoe}\Source](https://github.com/MagicFoundation/Alcinoe/tree/master/Source) -to the search path of your project. - -However, if you want to use visual components at design time, -you need to install the BPL. Launch Delphi and go to -Component > Install Packages... > and choose the BPL located -in [{alcinoe}\Libraries\bpl\Alcinoe\Win32\Alexandria\AlcinoeAlexandria.bpl](https://github.com/MagicFoundation/Alcinoe/tree/master/Libraries/bpl/Alcinoe/Win32/Alexandria). -You also need to add [{alcinoe}\Source](https://github.com/MagicFoundation/Alcinoe/tree/master/Source) -and all subdirectories located in [{alcinoe}\Embarcadero\Alexandria\11_3](https://github.com/MagicFoundation/Alcinoe/tree/master/Embarcadero/Alexandria/11_3/) -to your search path. - Propose a change using GitHub ----------------------------- diff --git a/Tests/_Source/ALTests.dproj b/Tests/_Source/ALTests.dproj index 0de92a30f..75c7adb7a 100644 --- a/Tests/_Source/ALTests.dproj +++ b/Tests/_Source/ALTests.dproj @@ -99,7 +99,7 @@ true $(BDS)\bin\delphi_PROJECTICON.ico $(BDS)\bin\delphi_PROJECTICNS.icns - $(DUnitX);..\..\Source;..\..\Embarcadero\Alexandria\11_3\fmx;..\..\Embarcadero\Alexandria\11_3\rtl\android;..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\Embarcadero\Alexandria\11_3\rtl\net;..\..\Embarcadero\Alexandria\11_3\rtl\win;$(DCC_UnitSearchPath) + $(DUnitX);..\..\Source;..\..\Embarcadero\Alexandria\fmx;..\..\Embarcadero\Alexandria\rtl\android;..\..\Embarcadero\Alexandria\rtl\ios;..\..\Embarcadero\Alexandria\rtl\net;..\..\Embarcadero\Alexandria\rtl\win;$(DCC_UnitSearchPath) ALTests 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= diff --git a/Tools/AndroidMerger/_Build/Sample/Sample.dproj b/Tools/AndroidMerger/_Build/Sample/Sample.dproj index 27a4b3d5f..04d59e32c 100644 --- a/Tools/AndroidMerger/_Build/Sample/Sample.dproj +++ b/Tools/AndroidMerger/_Build/Sample/Sample.dproj @@ -182,7 +182,7 @@ false false false - ..\..\..\Source;..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\Embarcadero\Alexandria\11_3\rtl\android;$(DCC_UnitSearchPath) + ..\..\..\Source;..\..\..\Embarcadero\Alexandria\fmx;..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\Embarcadero\Alexandria\rtl\android;$(DCC_UnitSearchPath) False diff --git a/Tools/DeployMan/_Build/Sample/Sample.dproj b/Tools/DeployMan/_Build/Sample/Sample.dproj index 6925577b0..9d8f9e203 100644 --- a/Tools/DeployMan/_Build/Sample/Sample.dproj +++ b/Tools/DeployMan/_Build/Sample/Sample.dproj @@ -182,7 +182,7 @@ false false false - ..\..\..\Source;..\..\..\Embarcadero\Alexandria\11_3\fmx;..\..\..\Embarcadero\Alexandria\11_3\rtl\ios;..\..\..\Embarcadero\Alexandria\11_3\rtl\android;$(DCC_UnitSearchPath) + ..\..\..\Source;..\..\..\Embarcadero\Alexandria\fmx;..\..\..\Embarcadero\Alexandria\rtl\ios;..\..\..\Embarcadero\Alexandria\rtl\android;$(DCC_UnitSearchPath) False