mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2024-11-15 15:55:56 +01:00
Update to CEF 81.2.15
This commit is contained in:
parent
846aeddd54
commit
3de53a0376
@ -3,13 +3,13 @@ CEF4Delphi is an open source project created by Salvador D
|
||||
|
||||
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 80.1.15 which includes Chromium 80.0.3987.163.
|
||||
CEF4Delphi uses CEF 81.2.15 which includes Chromium 81.0.4044.92.
|
||||
The CEF binaries used by CEF4Delphi are available for download at spotify :
|
||||
* [32 bits](http://opensource.spotify.com/cefbuilds/cef_binary_80.1.15%2Bg7b802c9%2Bchromium-80.0.3987.163_windows32.tar.bz2)
|
||||
* [64 bits](http://opensource.spotify.com/cefbuilds/cef_binary_80.1.15%2Bg7b802c9%2Bchromium-80.0.3987.163_windows64.tar.bz2)
|
||||
* [32 bits](http://opensource.spotify.com/cefbuilds/cef_binary_81.2.15%2Bge07275d%2Bchromium-81.0.4044.92_windows32.tar.bz2)
|
||||
* 64 bits not available at this moment.
|
||||
|
||||
|
||||
CEF4Delphi was developed and tested on Delphi 10.3 Rio and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2 and Lazarus 2.0.6/FPC 3.0.4. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components.
|
||||
CEF4Delphi was developed and tested on Delphi 10.3.3 and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2 and Lazarus 2.0.6/FPC 3.0.4. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components.
|
||||
|
||||
## Links
|
||||
* [Installation instructions and more information about CEF4Delphi](https://www.briskbard.com/index.php?lang=en&pageid=cef)
|
||||
|
@ -171,6 +171,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end;
|
||||
@ -251,6 +252,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end;
|
||||
|
@ -206,6 +206,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end;
|
||||
@ -293,6 +294,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end;
|
||||
|
@ -210,6 +210,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end;
|
||||
@ -290,6 +291,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end;
|
||||
|
@ -170,6 +170,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
Chromium1.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end
|
||||
@ -280,6 +281,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
Chromium1.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end
|
||||
|
@ -60,30 +60,20 @@ type
|
||||
Timer1: TTimer;
|
||||
Chromium1: TChromium;
|
||||
CEFWindowParent1: TCEFWindowParent;
|
||||
|
||||
procedure GoBtnClick(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure Timer1Timer(Sender: TObject);
|
||||
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
||||
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
||||
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser;
|
||||
var aAction : TCefCloseBrowserAction);
|
||||
procedure Chromium1BeforeClose(Sender: TObject;
|
||||
const browser: ICefBrowser);
|
||||
procedure Chromium1BeforePopup(Sender: TObject;
|
||||
const browser: ICefBrowser; const frame: ICefFrame; const targetUrl,
|
||||
targetFrameName: ustring;
|
||||
targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean;
|
||||
const popupFeatures: TCefPopupFeatures;
|
||||
var windowInfo: TCefWindowInfo; var client: ICefClient;
|
||||
var settings: TCefBrowserSettings;
|
||||
var extra_info: ICefDictionaryValue; var noJavascriptAccess,
|
||||
Result: Boolean);
|
||||
procedure Chromium1OpenUrlFromTab(Sender: TObject;
|
||||
const browser: ICefBrowser; const frame: ICefFrame;
|
||||
const targetUrl: ustring;
|
||||
targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean;
|
||||
out Result: Boolean);
|
||||
|
||||
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
||||
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction);
|
||||
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||
procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var extra_info: ICefDictionaryValue; var noJavascriptAccess, Result: Boolean);
|
||||
procedure Chromium1OpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
||||
|
||||
protected
|
||||
// Variables to control when can we destroy the form safely
|
||||
FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
|
||||
|
@ -259,6 +259,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end;
|
||||
@ -339,6 +340,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
Handled := True;
|
||||
end;
|
||||
|
@ -623,6 +623,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(aMessage.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
end;
|
||||
end;
|
||||
|
@ -582,6 +582,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(aMessage.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
end;
|
||||
end;
|
||||
|
@ -4,11 +4,11 @@
|
||||
<PathDelim Value="\"/>
|
||||
<Version Value="11"/>
|
||||
<BuildModes Active="Default"/>
|
||||
<Units Count="29">
|
||||
<Units Count="30">
|
||||
<Unit0>
|
||||
<Filename Value="SimpleOSRBrowser.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<TopLine Value="30"/>
|
||||
<CursorPos X="28" Y="39"/>
|
||||
<UsageCount Value="20"/>
|
||||
@ -37,7 +37,6 @@
|
||||
<ComponentName Value="Form1"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<TopLine Value="382"/>
|
||||
<CursorPos X="60" Y="393"/>
|
||||
<UsageCount Value="42"/>
|
||||
@ -243,6 +242,14 @@
|
||||
<CursorPos X="69" Y="621"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit28>
|
||||
<Unit29>
|
||||
<Filename Value="..\..\..\source\uCEFApplicationCore.pas"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<TopLine Value="43"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit29>
|
||||
</Units>
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
|
@ -632,6 +632,7 @@ begin
|
||||
TempKeyEvent.unmodified_character := #0;
|
||||
TempKeyEvent.focus_on_editable_field := ord(False);
|
||||
|
||||
CefCheckAltGrPressed(aMessage.wParam, TempKeyEvent);
|
||||
chrmosr.SendKeyEvent(@TempKeyEvent);
|
||||
end;
|
||||
end;
|
||||
|
@ -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="80" Minor="1" Release="15"/>
|
||||
<Version Major="81" Minor="2" Release="15"/>
|
||||
<Files Count="156">
|
||||
<Item1>
|
||||
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/>
|
||||
|
@ -60,15 +60,15 @@ uses
|
||||
uCEFTypes, uCEFInterfaces, uCEFBaseRefCounted, uCEFSchemeRegistrar;
|
||||
|
||||
const
|
||||
CEF_SUPPORTED_VERSION_MAJOR = 80;
|
||||
CEF_SUPPORTED_VERSION_MINOR = 1;
|
||||
CEF_SUPPORTED_VERSION_MAJOR = 81;
|
||||
CEF_SUPPORTED_VERSION_MINOR = 2;
|
||||
CEF_SUPPORTED_VERSION_RELEASE = 15;
|
||||
CEF_SUPPORTED_VERSION_BUILD = 0;
|
||||
|
||||
CEF_CHROMEELF_VERSION_MAJOR = 80;
|
||||
CEF_CHROMEELF_VERSION_MAJOR = 81;
|
||||
CEF_CHROMEELF_VERSION_MINOR = 0;
|
||||
CEF_CHROMEELF_VERSION_RELEASE = 3987;
|
||||
CEF_CHROMEELF_VERSION_BUILD = 163;
|
||||
CEF_CHROMEELF_VERSION_RELEASE = 4044;
|
||||
CEF_CHROMEELF_VERSION_BUILD = 92;
|
||||
|
||||
{$IFDEF MSWINDOWS}
|
||||
LIBCEF_DLL = 'libcef.dll';
|
||||
|
@ -618,6 +618,7 @@ begin
|
||||
TempItem^.color := underlines[i].color;
|
||||
TempItem^.background_color := underlines[i].background_color;
|
||||
TempItem^.thick := underlines[i].thick;
|
||||
TempItem^.style := underlines[i].style;
|
||||
|
||||
inc(i);
|
||||
inc(TempItem);
|
||||
|
@ -398,6 +398,7 @@ const
|
||||
EVENTFLAG_IS_KEY_PAD = 1 shl 9;
|
||||
EVENTFLAG_IS_LEFT = 1 shl 10;
|
||||
EVENTFLAG_IS_RIGHT = 1 shl 11;
|
||||
EVENTFLAG_ALTGR_DOWN = 1 shl 12;
|
||||
|
||||
// /include/internal/cef_types.h (cef_drag_operations_mask_t)
|
||||
DRAG_OPERATION_NONE = 0;
|
||||
|
@ -265,6 +265,7 @@ function CefIsKeyToggled(aWparam : WPARAM) : boolean;
|
||||
function GetCefMouseModifiers : TCefEventFlags; overload;
|
||||
function GetCefMouseModifiers(awparam : WPARAM) : TCefEventFlags; overload;
|
||||
function GetCefKeyboardModifiers(aWparam : WPARAM; aLparam : LPARAM) : TCefEventFlags;
|
||||
procedure CefCheckAltGrPressed(aWparam : WPARAM; var aEvent : TCefKeyEvent);
|
||||
|
||||
procedure DropEffectToDragOperation(aEffect : Longint; var aAllowedOps : TCefDragOperations);
|
||||
procedure DragOperationToDropEffect(const aDragOperations : TCefDragOperations; var aEffect: Longint);
|
||||
@ -1621,7 +1622,7 @@ begin
|
||||
|
||||
if Result then
|
||||
begin
|
||||
//parts.spec := CefString(@TempParts.spec);
|
||||
parts.spec := CefString(@TempParts.spec);
|
||||
parts.scheme := CefString(@TempParts.scheme);
|
||||
parts.username := CefString(@TempParts.username);
|
||||
parts.password := CefString(@TempParts.password);
|
||||
@ -1630,6 +1631,7 @@ begin
|
||||
parts.origin := CefString(@TempParts.origin);
|
||||
parts.path := CefString(@TempParts.path);
|
||||
parts.query := CefString(@TempParts.query);
|
||||
parts.fragment := CefString(@TempParts.fragment);
|
||||
end;
|
||||
end
|
||||
else
|
||||
@ -2034,6 +2036,34 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure CefCheckAltGrPressed(aWparam : WPARAM; var aEvent : TCefKeyEvent);
|
||||
const
|
||||
EITHER_SHIFT_KEY_PRESSED = $01;
|
||||
EITHER_CONTROL_KEY_PRESSED = $02;
|
||||
EITHER_ALT_KEY_PRESSED = $04;
|
||||
EITHER_HANKAKU_KEY_PRESSED = $08;
|
||||
EITHER_RESERVED1_KEY_PRESSED = $10;
|
||||
EITHER_RESERVED2_KEY_PRESSED = $20;
|
||||
var
|
||||
TempKBLayout : HKL;
|
||||
TempTranslatedChar : SHORT;
|
||||
TempShiftState : byte;
|
||||
begin
|
||||
if (aEvent.kind = KEYEVENT_CHAR) and CefIsKeyDown(VK_RMENU) then
|
||||
begin
|
||||
TempKBLayout := GetKeyboardLayout(0);
|
||||
TempTranslatedChar := VkKeyScanEx(char(aWparam), TempKBLayout);
|
||||
TempShiftState := byte(TempTranslatedChar shr 8);
|
||||
|
||||
if ((TempShiftState and EITHER_CONTROL_KEY_PRESSED) <> 0) and
|
||||
((TempShiftState and EITHER_ALT_KEY_PRESSED) <> 0) then
|
||||
begin
|
||||
aEvent.modifiers := aEvent.modifiers and not(EVENTFLAG_CONTROL_DOWN or EVENTFLAG_ALT_DOWN);
|
||||
aEvent.modifiers := aEvent.modifiers or EVENTFLAG_ALTGR_DOWN;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure DropEffectToDragOperation(aEffect: Longint; var aAllowedOps : TCefDragOperations);
|
||||
begin
|
||||
aAllowedOps := DRAG_OPERATION_NONE;
|
||||
|
@ -56,6 +56,7 @@ uses
|
||||
const
|
||||
DEFAULT_BLINK_UNDERLINE_COLOR = $FF000000; // Black SkColor
|
||||
DEFAULT_BLINK_BACKGROUND_COLOR = $00000000; // White SkColor
|
||||
DEFAULT_BLINK_UNDERLINE_STYLE = CEF_CUS_SOLID;
|
||||
|
||||
KEYBOARD_LAYOUT_EN_US = $0409;
|
||||
|
||||
@ -256,6 +257,7 @@ begin
|
||||
underlines[i].range.from := 0;
|
||||
underlines[i].range.to_ := TempStart;
|
||||
underlines[i].thick := 0;
|
||||
underlines[i].style := DEFAULT_BLINK_UNDERLINE_STYLE;
|
||||
|
||||
inc(i);
|
||||
end;
|
||||
@ -267,6 +269,7 @@ begin
|
||||
underlines[i].range.from := TempStart;
|
||||
underlines[i].range.to_ := TempEnd;
|
||||
underlines[i].thick := 1;
|
||||
underlines[i].style := DEFAULT_BLINK_UNDERLINE_STYLE;
|
||||
|
||||
inc(i);
|
||||
end;
|
||||
@ -278,6 +281,7 @@ begin
|
||||
underlines[i].range.from := TempEnd;
|
||||
underlines[i].range.to_ := TempLen;
|
||||
underlines[i].thick := 0;
|
||||
underlines[i].style := DEFAULT_BLINK_UNDERLINE_STYLE;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -440,6 +444,7 @@ begin
|
||||
underlines[j].range.to_ := TempBuffer[succ(i)];
|
||||
underlines[j].color := DEFAULT_BLINK_UNDERLINE_COLOR;
|
||||
underlines[j].background_color := DEFAULT_BLINK_BACKGROUND_COLOR;
|
||||
underlines[j].style := DEFAULT_BLINK_UNDERLINE_STYLE;
|
||||
|
||||
if (underlines[j].range.from >= target_start) and
|
||||
(underlines[j].range.to_ <= target_end) then
|
||||
|
@ -481,6 +481,7 @@ type
|
||||
origin : TCefString;
|
||||
path : TCefString;
|
||||
query : TCefString;
|
||||
fragment : TCefString;
|
||||
end;
|
||||
|
||||
TUrlParts = record
|
||||
@ -493,6 +494,7 @@ type
|
||||
origin : ustring;
|
||||
path : ustring;
|
||||
query : ustring;
|
||||
fragment : ustring;
|
||||
end;
|
||||
|
||||
// /include/internal/cef_types.h (cef_insets_t)
|
||||
@ -1032,12 +1034,21 @@ type
|
||||
CEF_CDM_REGISTRATION_ERROR_NOT_SUPPORTED
|
||||
);
|
||||
|
||||
// /include/internal/cef_types.h (cef_composition_underline_style_t)
|
||||
TCefCompositionUnderlineStyle = (
|
||||
CEF_CUS_SOLID,
|
||||
CEF_CUS_DOT,
|
||||
CEF_CUS_DASH,
|
||||
CEF_CUS_NONE
|
||||
);
|
||||
|
||||
// /include/internal/cef_types.h (cef_composition_underline_t)
|
||||
TCefCompositionUnderline = record
|
||||
range : TCefRange;
|
||||
color : TCefColor;
|
||||
background_color : TCefColor;
|
||||
thick : integer;
|
||||
style : TCefCompositionUnderlineStyle;
|
||||
end;
|
||||
TCefCompositionUnderlineDynArray = array of TCefCompositionUnderline;
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
"UpdateLazPackages" : [
|
||||
{
|
||||
"ForceNotify" : true,
|
||||
"InternalVersion" : 116,
|
||||
"InternalVersion" : 117,
|
||||
"Name" : "cef4delphi_lazarus.lpk",
|
||||
"Version" : "80.1.15.0"
|
||||
"Version" : "81.2.15.0"
|
||||
}
|
||||
],
|
||||
"UpdatePackageData" : {
|
||||
|
Loading…
Reference in New Issue
Block a user