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" : {