diff --git a/README.md b/README.md
index 3ce7abb7..75e14321 100644
--- a/README.md
+++ b/README.md
@@ -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)
diff --git a/demos/Delphi_VCL/ConsoleBrowser/uWebBrowser.pas b/demos/Delphi_VCL/ConsoleBrowser/uWebBrowser.pas
index 341ff726..eb89f199 100644
--- a/demos/Delphi_VCL/ConsoleBrowser/uWebBrowser.pas
+++ b/demos/Delphi_VCL/ConsoleBrowser/uWebBrowser.pas
@@ -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;
diff --git a/demos/Delphi_VCL/KioskOSRBrowser/uKioskOSRBrowser.pas b/demos/Delphi_VCL/KioskOSRBrowser/uKioskOSRBrowser.pas
index 2b95484f..3424df2d 100644
--- a/demos/Delphi_VCL/KioskOSRBrowser/uKioskOSRBrowser.pas
+++ b/demos/Delphi_VCL/KioskOSRBrowser/uKioskOSRBrowser.pas
@@ -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;
diff --git a/demos/Delphi_VCL/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas b/demos/Delphi_VCL/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
index aa28ab29..402dc93a 100644
--- a/demos/Delphi_VCL/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
+++ b/demos/Delphi_VCL/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
@@ -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;
diff --git a/demos/Delphi_VCL/PopupBrowser/uChildForm.pas b/demos/Delphi_VCL/PopupBrowser/uChildForm.pas
index 02c6b768..a71e70e8 100644
--- a/demos/Delphi_VCL/PopupBrowser/uChildForm.pas
+++ b/demos/Delphi_VCL/PopupBrowser/uChildForm.pas
@@ -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
diff --git a/demos/Delphi_VCL/SimpleBrowser2/uSimpleBrowser2.pas b/demos/Delphi_VCL/SimpleBrowser2/uSimpleBrowser2.pas
index fe3b079d..1b6bc0e1 100644
--- a/demos/Delphi_VCL/SimpleBrowser2/uSimpleBrowser2.pas
+++ b/demos/Delphi_VCL/SimpleBrowser2/uSimpleBrowser2.pas
@@ -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
diff --git a/demos/Delphi_VCL/SimpleOSRBrowser/uSimpleOSRBrowser.pas b/demos/Delphi_VCL/SimpleOSRBrowser/uSimpleOSRBrowser.pas
index 53556086..4728acb3 100644
--- a/demos/Delphi_VCL/SimpleOSRBrowser/uSimpleOSRBrowser.pas
+++ b/demos/Delphi_VCL/SimpleOSRBrowser/uSimpleOSRBrowser.pas
@@ -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;
diff --git a/demos/Lazarus/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas b/demos/Lazarus/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
index 8bc5956a..ab45652d 100644
--- a/demos/Lazarus/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
+++ b/demos/Lazarus/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
@@ -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;
diff --git a/demos/Lazarus/PopupBrowser/uChildForm.pas b/demos/Lazarus/PopupBrowser/uChildForm.pas
index b0196b86..d30e01d3 100644
--- a/demos/Lazarus/PopupBrowser/uChildForm.pas
+++ b/demos/Lazarus/PopupBrowser/uChildForm.pas
@@ -186,10 +186,10 @@ begin
end;
procedure TChildForm.chrmosrIMECompositionRangeChanged( Sender : TObject;
- const browser : ICefBrowser;
- const selected_range : PCefRange;
- character_boundsCount : NativeUInt;
- const character_bounds : PCefRect);
+ const browser : ICefBrowser;
+ const selected_range : PCefRange;
+ character_boundsCount : NativeUInt;
+ const character_bounds : PCefRect);
var
TempPRect : PCefRect;
i : NativeUInt;
@@ -284,19 +284,19 @@ begin
Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]);
end;
-procedure TChildForm.chrmosrCursorChange(Sender : TObject;
- const browser : ICefBrowser;
- aCursor : HICON;
- cursorType : TCefCursorType;
- const customCursorInfo : PCefCursorInfo);
+procedure TChildForm.chrmosrCursorChange( Sender : TObject;
+ const browser : ICefBrowser;
+ aCursor : HICON;
+ cursorType : TCefCursorType;
+ const customCursorInfo : PCefCursorInfo);
begin
Panel1.Cursor := CefCursorToWindowsCursor(cursorType);
end;
-procedure TChildForm.chrmosrGetScreenInfo(Sender : TObject;
- const browser : ICefBrowser;
- var screenInfo : TCefScreenInfo;
- out Result : Boolean);
+procedure TChildForm.chrmosrGetScreenInfo( Sender : TObject;
+ const browser : ICefBrowser;
+ var screenInfo : TCefScreenInfo;
+ out Result : Boolean);
var
TempRect : TCEFRect;
begin
@@ -339,9 +339,9 @@ begin
Result := False;
end;
-procedure TChildForm.chrmosrGetViewRect(Sender : TObject;
- const browser : ICefBrowser;
- var rect : TCefRect);
+procedure TChildForm.chrmosrGetViewRect( Sender : TObject;
+ const browser : ICefBrowser;
+ var rect : TCefRect);
begin
if (GlobalCEFApp <> nil) then
begin
@@ -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;
@@ -870,18 +871,18 @@ begin
end;
procedure TChildForm.Panel1IMECommitText( Sender : TObject;
- const aText : ustring;
- const replacement_range : PCefRange;
- relative_cursor_pos : Integer);
+ const aText : ustring;
+ const replacement_range : PCefRange;
+ relative_cursor_pos : Integer);
begin
chrmosr.IMECommitText(aText, replacement_range, relative_cursor_pos);
end;
procedure TChildForm.Panel1IMESetComposition( Sender : TObject;
- const aText : ustring;
- const underlines : TCefCompositionUnderlineDynArray;
- const replacement_range : TCefRange;
- const selection_range : TCefRange);
+ const aText : ustring;
+ const underlines : TCefCompositionUnderlineDynArray;
+ const replacement_range : TCefRange;
+ const selection_range : TCefRange);
begin
chrmosr.IMESetComposition(aText, underlines, @replacement_range, @selection_range);
end;
diff --git a/demos/Lazarus/SimpleOSRBrowser/SimpleOSRBrowser.lps b/demos/Lazarus/SimpleOSRBrowser/SimpleOSRBrowser.lps
index aabdd139..2442985d 100644
--- a/demos/Lazarus/SimpleOSRBrowser/SimpleOSRBrowser.lps
+++ b/demos/Lazarus/SimpleOSRBrowser/SimpleOSRBrowser.lps
@@ -4,11 +4,11 @@
-
+
-
+
@@ -37,7 +37,6 @@
-
@@ -243,6 +242,14 @@
+
+
+
+
+
+
+
+
diff --git a/demos/Lazarus/SimpleOSRBrowser/usimplelazosrbrowser.pas b/demos/Lazarus/SimpleOSRBrowser/usimplelazosrbrowser.pas
index 13a6ae53..7d63d9ea 100644
--- a/demos/Lazarus/SimpleOSRBrowser/usimplelazosrbrowser.pas
+++ b/demos/Lazarus/SimpleOSRBrowser/usimplelazosrbrowser.pas
@@ -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;
diff --git a/packages/cef4delphi_lazarus.lpk b/packages/cef4delphi_lazarus.lpk
index e7436c9d..524b4bd6 100644
--- a/packages/cef4delphi_lazarus.lpk
+++ b/packages/cef4delphi_lazarus.lpk
@@ -21,7 +21,7 @@
-
+
diff --git a/source/uCEFApplicationCore.pas b/source/uCEFApplicationCore.pas
index 74f72e5b..7282af31 100644
--- a/source/uCEFApplicationCore.pas
+++ b/source/uCEFApplicationCore.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';
diff --git a/source/uCEFBrowser.pas b/source/uCEFBrowser.pas
index 4aa49716..9e9e629b 100644
--- a/source/uCEFBrowser.pas
+++ b/source/uCEFBrowser.pas
@@ -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);
diff --git a/source/uCEFConstants.pas b/source/uCEFConstants.pas
index a05a270a..e6a0d9ad 100644
--- a/source/uCEFConstants.pas
+++ b/source/uCEFConstants.pas
@@ -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;
diff --git a/source/uCEFMiscFunctions.pas b/source/uCEFMiscFunctions.pas
index a5eb09f2..e0927804 100644
--- a/source/uCEFMiscFunctions.pas
+++ b/source/uCEFMiscFunctions.pas
@@ -260,11 +260,12 @@ function CefZipDirectory(const srcDir, destFile: ustring; includeHiddenFiles: Bo
procedure CefLoadCRLSetsFile(const path : ustring);
{$IFDEF MSWINDOWS}
-function CefIsKeyDown(aWparam : WPARAM) : boolean;
-function CefIsKeyToggled(aWparam : WPARAM) : boolean;
-function GetCefMouseModifiers : TCefEventFlags; overload;
-function GetCefMouseModifiers(awparam : WPARAM) : TCefEventFlags; overload;
-function GetCefKeyboardModifiers(aWparam : WPARAM; aLparam : LPARAM) : TCefEventFlags;
+function CefIsKeyDown(aWparam : WPARAM) : boolean;
+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;
diff --git a/source/uCEFOSRIMEHandler.pas b/source/uCEFOSRIMEHandler.pas
index ed9ab036..d9024f51 100644
--- a/source/uCEFOSRIMEHandler.pas
+++ b/source/uCEFOSRIMEHandler.pas
@@ -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
diff --git a/source/uCEFTypes.pas b/source/uCEFTypes.pas
index 03e7ebed..55b00555 100644
--- a/source/uCEFTypes.pas
+++ b/source/uCEFTypes.pas
@@ -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;
diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json
index 5a3c0bb3..b0b6dca4 100644
--- a/update_CEF4Delphi.json
+++ b/update_CEF4Delphi.json
@@ -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" : {