1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-02-02 10:25:26 +02:00

Update to CEF 88.2.8

Fixed issue #339 : SimpleOSRBrowser crashes when the mouse is moved over the browser using CEF 88
This commit is contained in:
Salvador Diaz Fau 2021-02-16 12:45:44 +01:00
parent 7de0ea6a81
commit bdaf4554e6
7 changed files with 224 additions and 80 deletions

View File

@ -3,14 +3,14 @@ CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chro
CEF4Delphi is based on DCEF3, made by Henri Gourvest. The original license of DCEF3 still applies to CEF4Delphi. Read the license terms in the first lines of any *.pas file.
CEF4Delphi uses CEF 88.2.7 which includes Chromium 88.0.4324.150.
CEF4Delphi uses CEF 88.2.8 which includes Chromium 88.0.4324.150.
The CEF binaries used by CEF4Delphi are available for download at spotify :
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.7%2Bgc18ff58%2Bchromium-88.0.4324.150_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.7%2Bgc18ff58%2Bchromium-88.0.4324.150_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.7%2Bgc18ff58%2Bchromium-88.0.4324.150_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.7%2Bgc18ff58%2Bchromium-88.0.4324.150_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.7%2Bgc18ff58%2Bchromium-88.0.4324.150_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.7%2Bgc18ff58%2Bchromium-88.0.4324.150_linuxarm64.tar.bz2)
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.8%2Bge484012%2Bchromium-88.0.4324.150_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.8%2Bge484012%2Bchromium-88.0.4324.150_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.8%2Bge484012%2Bchromium-88.0.4324.150_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.8%2Bge484012%2Bchromium-88.0.4324.150_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.8%2Bge484012%2Bchromium-88.0.4324.150_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.8%2Bge484012%2Bchromium-88.0.4324.150_linuxarm64.tar.bz2)
CEF4Delphi was developed and tested on Delphi 10.4.1 and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2, Delphi 10.3 and Lazarus 2.0.10/FPC 3.2.0. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components.
@ -52,3 +52,6 @@ Some icons used in this project belong to these icon packages :
## Other resources
* [Learn Delphi](https://learndelphi.org/)
* [Essential Pascal by Marco Cantù](https://www.marcocantu.com/epascal/)
* [FreePascal from SquareOne by Jeff Duntemann](http://www.copperwood.com/pub/FreePascalFromSquareOne.pdf)
* [Pascal and Lazarus Books and Magazines](https://wiki.freepascal.org/Pascal_and_Lazarus_Books_and_Magazines)
* [Lazarus Documentation](https://wiki.freepascal.org/Lazarus_Documentation)

View File

@ -3,14 +3,14 @@
<ProjectSession>
<Version Value="11"/>
<BuildModes Active="Default"/>
<Units Count="111">
<Units Count="112">
<Unit0>
<Filename Value="SimpleOSRBrowser.lpr"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<TopLine Value="29"/>
<CursorPos X="57" Y="58"/>
<UsageCount Value="85"/>
<UsageCount Value="90"/>
</Unit0>
<Unit1>
<Filename Value="usimpleosrbrowser.pas"/>
@ -20,11 +20,13 @@
<ResourceBaseClass Value="Form"/>
<UnitName Value="uSimpleOSRBrowser"/>
<IsVisibleTab Value="True"/>
<TopLine Value="341"/>
<CursorPos X="27" Y="359"/>
<UsageCount Value="85"/>
<Bookmarks Count="1">
<Item0 X="80" Y="554" ID="6"/>
<TopLine Value="310"/>
<CursorPos X="3" Y="314"/>
<UsageCount Value="90"/>
<Bookmarks Count="3">
<Item0 X="80" Y="560" ID="6"/>
<Item1 Y="520" ID="9"/>
<Item2 Y="814" ID="8"/>
</Bookmarks>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -35,7 +37,7 @@
<UnitName Value="Interfaces"/>
<EditorIndex Value="-1"/>
<CursorPos X="40" Y="20"/>
<UsageCount Value="81"/>
<UsageCount Value="86"/>
</Unit2>
<Unit3>
<Filename Value="/usr/share/lazarus/2.0.6/lcl/lcltype.pp"/>
@ -124,34 +126,29 @@
</Unit14>
<Unit15>
<Filename Value="../../../source/uCEFBufferPanel.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="231"/>
<CursorPos Y="257"/>
<UsageCount Value="29"/>
<Bookmarks Count="4">
<Item0 Y="1038" ID="9"/>
<Item1 X="63" Y="591" ID="8"/>
<Item2 X="5" Y="352" ID="7"/>
<Item3 X="5" Y="382" ID="1"/>
<EditorIndex Value="1"/>
<TopLine Value="129"/>
<CursorPos X="19" Y="150"/>
<UsageCount Value="31"/>
<Bookmarks Count="1">
<Item0 X="5" Y="355" ID="7"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit15>
<Unit16>
<Filename Value="/usr/share/lazarus/2.0.10/lcl/forms.pp"/>
<UnitName Value="Forms"/>
<EditorIndex Value="-1"/>
<TopLine Value="684"/>
<CursorPos X="31" Y="711"/>
<UsageCount Value="9"/>
<TopLine Value="2025"/>
<CursorPos X="3" Y="2028"/>
<UsageCount Value="11"/>
</Unit16>
<Unit17>
<Filename Value="../../../source/uCEFApplicationCore.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="340"/>
<CursorPos X="40" Y="377"/>
<UsageCount Value="10"/>
<Bookmarks Count="1">
<Item0 X="3" Y="2235" ID="3"/>
</Bookmarks>
<CursorPos X="39" Y="378"/>
<UsageCount Value="11"/>
</Unit17>
<Unit18>
<Filename Value="../../../source/uCEFApplication.pas"/>
@ -293,9 +290,9 @@
<Unit37>
<Filename Value="/usr/share/lazarus/2.0.10/lcl/interfaces/gtk2/gtk2winapi.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="7097"/>
<CursorPos X="15" Y="7124"/>
<UsageCount Value="9"/>
<TopLine Value="220"/>
<CursorPos X="39" Y="234"/>
<UsageCount Value="10"/>
</Unit37>
<Unit38>
<Filename Value="/usr/share/lazarus/2.0.10/lcl/interfaces/gtk2/gtk2widgetset.inc"/>
@ -400,14 +397,14 @@
<Unit52>
<Filename Value="../../../source/uCEFChromiumCore.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="2506"/>
<CursorPos Y="2529"/>
<UsageCount Value="10"/>
<TopLine Value="2505"/>
<CursorPos X="63" Y="2526"/>
<UsageCount Value="12"/>
<Bookmarks Count="4">
<Item0 Y="4619" ID="2"/>
<Item1 X="41" Y="2931" ID="9"/>
<Item2 Y="6346" ID="1"/>
<Item3 Y="2529" ID="3"/>
<Item0 Y="6356" ID="2"/>
<Item1 X="67" Y="4620" ID="1"/>
<Item2 X="50" Y="447" ID="3"/>
<Item3 X="10" Y="2528" ID="4"/>
</Bookmarks>
</Unit52>
<Unit53>
@ -529,13 +526,9 @@
<Unit69>
<Filename Value="/usr/share/lazarus/2.0.10/lcl/interfaces/gtk2/gtk2proc.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="8852"/>
<CursorPos X="37" Y="8887"/>
<TopLine Value="4630"/>
<CursorPos Y="4653"/>
<UsageCount Value="11"/>
<Bookmarks Count="2">
<Item0 X="91" Y="1895" ID="1"/>
<Item1 X="42" Y="2240" ID="2"/>
</Bookmarks>
</Unit69>
<Unit70>
<Filename Value="/usr/share/lazarus/2.0.10/lcl/interfaces/gtk2/gtk2proc.pp"/>
@ -584,9 +577,9 @@
<Unit76>
<Filename Value="../../../source/uCEFTypes.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="1404"/>
<CursorPos X="17" Y="1427"/>
<UsageCount Value="10"/>
<TopLine Value="880"/>
<CursorPos X="5" Y="903"/>
<UsageCount Value="12"/>
</Unit76>
<Unit77>
<Filename Value="/usr/share/fpcsrc/3.2.0/rtl/inc/objpash.inc"/>
@ -709,10 +702,11 @@
</Unit93>
<Unit94>
<Filename Value="../../../source/uCEFBitmapBitBuffer.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="153"/>
<CursorPos X="3" Y="172"/>
<EditorIndex Value="2"/>
<TopLine Value="56"/>
<CursorPos X="19" Y="79"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit94>
<Unit95>
<Filename Value="/usr/share/lazarus/2.0.10/components/lazutils/LazLoggerIntf.inc"/>
@ -812,27 +806,150 @@
<Unit109>
<Filename Value="../../../source/uCEFInterfaces.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="452"/>
<CursorPos Y="488"/>
<TopLine Value="455"/>
<CursorPos X="66" Y="487"/>
<UsageCount Value="10"/>
</Unit109>
<Unit110>
<Filename Value="../../../source/uCEFTask.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="641"/>
<CursorPos Y="684"/>
<TopLine Value="638"/>
<CursorPos Y="683"/>
<UsageCount Value="10"/>
</Unit110>
<Unit111>
<Filename Value="/usr/share/fpcsrc/3.2.0/rtl/inc/typshrdh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="39"/>
<CursorPos X="3" Y="62"/>
<UsageCount Value="10"/>
</Unit111>
</Units>
<OtherDefines Count="2">
<Define0 Value="UseCthreads"/>
<Define1 Value="EnabledGtkThreading"/>
</OtherDefines>
<JumpHistory Count="1">
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="359" Column="27" TopLine="341"/>
<Caret Line="521" Column="3" TopLine="515"/>
</Position1>
<Position2>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="81" Column="15" TopLine="58"/>
</Position2>
<Position3>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="533" Column="3" TopLine="527"/>
</Position3>
<Position4>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="82" Column="15" TopLine="59"/>
</Position4>
<Position5>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="551" Column="3" TopLine="554"/>
</Position5>
<Position6>
<Filename Value="../../../source/uCEFBufferPanel.pas"/>
<Caret Line="150" Column="19" TopLine="128"/>
</Position6>
<Position7>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="571" Column="60" TopLine="555"/>
</Position7>
<Position8>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="83" Column="15" TopLine="59"/>
</Position8>
<Position9>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="639" Column="3" TopLine="636"/>
</Position9>
<Position10>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="84" Column="15" TopLine="61"/>
</Position10>
<Position11>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="652" Column="3" TopLine="649"/>
</Position11>
<Position12>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="85" Column="15" TopLine="62"/>
</Position12>
<Position13>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="662" Column="3" TopLine="659"/>
</Position13>
<Position14>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="79" Column="15" TopLine="63"/>
</Position14>
<Position15>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="507" Column="24" TopLine="499"/>
</Position15>
<Position16>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="124" Column="15" TopLine="99"/>
</Position16>
<Position17>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="805" TopLine="780"/>
</Position17>
<Position18>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="505" TopLine="489"/>
</Position18>
<Position19>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="808" Column="5" TopLine="782"/>
</Position19>
<Position20>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="512" Column="19" TopLine="489"/>
</Position20>
<Position21>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="808" TopLine="787"/>
</Position21>
<Position22>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="807" Column="44" TopLine="787"/>
</Position22>
<Position23>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="135" Column="15" TopLine="104"/>
</Position23>
<Position24>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="858" Column="21" TopLine="828"/>
</Position24>
<Position25>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="136" Column="15" TopLine="113"/>
</Position25>
<Position26>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="872" Column="21" TopLine="829"/>
</Position26>
<Position27>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="125" Column="15" TopLine="104"/>
</Position27>
<Position28>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="810" Column="62" TopLine="799"/>
</Position28>
<Position29>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="869" Column="98" TopLine="833"/>
</Position29>
<Position30>
<Filename Value="usimpleosrbrowser.pas"/>
<Caret Line="87" Column="15" TopLine="83"/>
</Position30>
</JumpHistory>
<RunParams>
<FormatVersion Value="2"/>

View File

@ -1,7 +1,7 @@
object Form1: TForm1
Left = 518
Height = 630
Top = 252
Top = 251
Width = 1000
Caption = ' Initializing browser. Please wait...'
ClientHeight = 630
@ -12,6 +12,7 @@ object Form1: TForm1
OnDestroy = FormDestroy
OnHide = FormHide
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '2.0.10.0'
object AddressPnl: TPanel
Left = 0
@ -78,6 +79,7 @@ object Form1: TForm1
Color = clWhite
ParentColor = False
TabOrder = 1
TabStop = True
OnClick = Panel1Click
OnEnter = Panel1Enter
OnExit = Panel1Exit
@ -85,9 +87,9 @@ object Form1: TForm1
OnMouseMove = Panel1MouseMove
OnMouseUp = Panel1MouseUp
OnMouseWheel = Panel1MouseWheel
OnResize = Panel1Resize
OnMouseEnter = Panel1MouseEnter
OnMouseLeave = Panel1MouseLeave
OnResize = Panel1Resize
end
object Chromium1: TChromium
OnTooltip = Chromium1Tooltip

View File

@ -110,6 +110,7 @@ type
FBrowserCS : TCriticalSection;
FPanelCursor : TCursor;
FPanelHint : ustring;
FPanelOffset : TPoint;
function GetPanelCursor : TCursor;
function GetPanelHint : ustring;
@ -121,6 +122,7 @@ type
function getModifiers(Shift: TShiftState): TCefEventFlags;
function GetButton(Button: TMouseButton): TCefMouseButtonType;
procedure DoResize;
procedure UpdatePanelOffset;
procedure BrowserCreatedMsg(Data: PtrInt);
procedure BrowserCloseFormMsg(Data: PtrInt);
@ -308,7 +310,6 @@ end;
procedure TForm1.FormActivate(Sender: TObject);
begin
// You *MUST* call CreateBrowser to create and initialize the browser.
// This will trigger the AfterCreated event when the browser is fully
// initialized and ready to receive commands.
@ -323,6 +324,8 @@ begin
// We have to update the DeviceScaleFactor here to get the scale of the
// monitor where the main application form is located.
GlobalCEFApp.UpdateDeviceScaleFactor;
Panel1.UpdateDeviceScaleFactor;
UpdatePanelOffset;
// opaque white background color
Chromium1.Options.BackgroundColor := CefColorSetARGB($FF, $FF, $FF, $FF);
@ -497,20 +500,22 @@ begin
Result := True;
end;
procedure TForm1.Chromium1GetScreenPoint(Sender: TObject;
const browser: ICefBrowser; viewX, viewY: Integer; var screenX,
screenY: Integer; out Result: Boolean);
var
TempScreenPt, TempViewPt : TPoint;
TempScale : single;
procedure TForm1.Chromium1GetScreenPoint( Sender : TObject;
const browser : ICefBrowser;
viewX : Integer;
viewY : Integer;
var screenX : Integer;
var screenY : Integer;
out Result : Boolean);
begin
TempScale := Panel1.ScreenScale;
TempViewPt.x := LogicalToDevice(viewX, TempScale);
TempViewPt.y := LogicalToDevice(viewY, TempScale);
TempScreenPt := Panel1.ClientToScreen(TempViewPt);
screenX := TempScreenPt.x;
screenY := TempScreenPt.y;
Result := True;
try
FBrowserCS.Acquire;
screenX := LogicalToDevice(viewX, Panel1.ScreenScale) + FPanelOffset.x;
screenY := LogicalToDevice(viewY, Panel1.ScreenScale) + FPanelOffset.y;
Result := True;
finally
FBrowserCS.Release;
end;
end;
procedure TForm1.Chromium1GetViewRect(Sender: TObject;
@ -796,6 +801,20 @@ begin
end;
end;
procedure TForm1.UpdatePanelOffset;
var
TempPoint : TPoint;
begin
try
FBrowserCS.Acquire;
TempPoint.x := 0;
TempPoint.y := 0;
FPanelOffset := Panel1.ClientToScreen(TempPoint);
finally
FBrowserCS.Release;
end;
end;
function TForm1.GetPanelCursor : TCursor;
begin
try
@ -839,18 +858,21 @@ end;
procedure TForm1.WMMove(var Message: TLMMove);
begin
inherited;
UpdatePanelOffset;
Chromium1.NotifyMoveOrResizeStarted;
end;
procedure TForm1.WMSize(var Message: TLMSize);
begin
inherited;
UpdatePanelOffset;
Chromium1.NotifyMoveOrResizeStarted;
end;
procedure TForm1.WMWindowPosChanged(var Message: TLMWindowPosChanged);
begin
inherited;
UpdatePanelOffset;
Chromium1.NotifyMoveOrResizeStarted;
end;

View File

@ -21,7 +21,7 @@
</CompilerOptions>
<Description Value="CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC."/>
<License Value="MPL 1.1"/>
<Version Major="88" Minor="2" Release="7"/>
<Version Major="88" Minor="2" Release="8"/>
<Files Count="197">
<Item1>
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/>

View File

@ -66,7 +66,7 @@ uses
const
CEF_SUPPORTED_VERSION_MAJOR = 88;
CEF_SUPPORTED_VERSION_MINOR = 2;
CEF_SUPPORTED_VERSION_RELEASE = 7;
CEF_SUPPORTED_VERSION_RELEASE = 8;
CEF_SUPPORTED_VERSION_BUILD = 0;
CEF_CHROMEELF_VERSION_MAJOR = 88;

View File

@ -2,9 +2,9 @@
"UpdateLazPackages" : [
{
"ForceNotify" : true,
"InternalVersion" : 257,
"InternalVersion" : 258,
"Name" : "cef4delphi_lazarus.lpk",
"Version" : "88.2.7.0"
"Version" : "88.2.8.0"
}
],
"UpdatePackageData" : {