From f893242ad052191b8e60e72c8d592aa921ddaf0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salvador=20D=C3=ADaz=20Fau?= Date: Sun, 21 Sep 2025 12:31:09 +0200 Subject: [PATCH] Added SimpleOSRBrowser for QT5 --- .../SimpleOSRBrowser/00-Delete.bat | 2 + .../SimpleOSRBrowser/SimpleOSRBrowser.ico | Bin 0 -> 62632 bytes .../SimpleOSRBrowser/SimpleOSRBrowser.lpi | 98 +++ .../SimpleOSRBrowser/SimpleOSRBrowser.lpr | 42 + .../SimpleOSRBrowser/SimpleOSRBrowser.res | Bin 0 -> 64716 bytes .../SimpleOSRBrowser/interfaces.pas | 66 ++ .../SimpleOSRBrowser/umainform.lfm | 145 +++ .../SimpleOSRBrowser/umainform.pas | 833 ++++++++++++++++++ update_CEF4Delphi.json | 2 +- 9 files changed, 1187 insertions(+), 1 deletion(-) create mode 100644 demos/Lazarus_Linux_QT5/SimpleOSRBrowser/00-Delete.bat create mode 100644 demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.ico create mode 100644 demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.lpi create mode 100644 demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.lpr create mode 100644 demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.res create mode 100644 demos/Lazarus_Linux_QT5/SimpleOSRBrowser/interfaces.pas create mode 100644 demos/Lazarus_Linux_QT5/SimpleOSRBrowser/umainform.lfm create mode 100644 demos/Lazarus_Linux_QT5/SimpleOSRBrowser/umainform.pas diff --git a/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/00-Delete.bat b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/00-Delete.bat new file mode 100644 index 00000000..0b5ba5c8 --- /dev/null +++ b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/00-Delete.bat @@ -0,0 +1,2 @@ +rmdir /S /Q lib +rmdir /S /Q backup diff --git a/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.ico b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.ico new file mode 100644 index 0000000000000000000000000000000000000000..86b1038442b06e563d82dd4fbd595eb1f52fcfd2 GIT binary patch literal 62632 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 A*8l(j literal 0 HcmV?d00001 diff --git a/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.lpi b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.lpi new file mode 100644 index 00000000..84ba6405 --- /dev/null +++ b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.lpi @@ -0,0 +1,98 @@ + + + + + + + + <Scaled Value="True"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <XPManifest> + <DpiAware Value="True"/> + </XPManifest> + <Icon Value="0"/> + </General> + <MacroValues Count="1"> + <Macro2 Name="LCLWidgetType" Value="qt5"/> + </MacroValues> + <BuildModes> + <Item Name="Default" Default="True"/> + <SharedMatrixOptions Count="1"> + <Item1 ID="279237770443" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="qt5"/> + </SharedMatrixOptions> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <UseFileFilters Value="True"/> + </PublishOptions> + <RunParams> + <FormatVersion Value="2"/> + </RunParams> + <RequiredPackages> + <Item> + <PackageName Value="CEF4Delphi_Lazarus"/> + </Item> + <Item> + <PackageName Value="LCL"/> + </Item> + </RequiredPackages> + <Units> + <Unit> + <Filename Value="SimpleOSRBrowser.lpr"/> + <IsPartOfProject Value="True"/> + </Unit> + <Unit> + <Filename Value="umainform.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="MainForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="uMainForm"/> + </Unit> + <Unit> + <Filename Value="interfaces.pas"/> + <IsPartOfProject Value="True"/> + </Unit> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="../../../bin/SimpleOSRBrowserQT"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf3"/> + </Debugging> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + <Other> + <CompilerMessages> + <IgnoredMessages idx5024="True"/> + </CompilerMessages> + <CustomOptions Value="-dUseCThreads"/> + </Other> + </CompilerOptions> + <Debugging> + <Exceptions> + <Item> + <Name Value="EAbort"/> + </Item> + <Item> + <Name Value="ECodetoolError"/> + </Item> + <Item> + <Name Value="EFOpenError"/> + </Item> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.lpr b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.lpr new file mode 100644 index 00000000..ce17cba0 --- /dev/null +++ b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.lpr @@ -0,0 +1,42 @@ +program SimpleOSRBrowser; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX} + cthreads, + {$ENDIF} + {$IFDEF HASAMIGA} + athreads, + {$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, uMainForm + { you can add units after this }, + uCEFApplication; + +{$R *.res} + +begin + CreateGlobalCEFApp; + + if StartMainProcess then + begin + // The LCL Widgetset must be initialized after the CEF initialization and + // only in the browser process. + CustomWidgetSetInitialization; + + RequireDerivedFormResource:=True; + Application.Scaled:=True; + {$PUSH}{$WARN 5044 OFF} + Application.MainFormOnTaskbar:=True; + {$POP} + Application.Initialize; + Application.CreateForm(TMainForm, MainForm); + Application.Run; + + CustomWidgetSetFinalization; + end; + + DestroyGlobalCEFApp; +end. + diff --git a/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.res b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/SimpleOSRBrowser.res new file mode 100644 index 0000000000000000000000000000000000000000..d3a9f9017829e9874e91a7100700382bbe97b9f8 GIT binary patch literal 64716 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≺a2* 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 z≤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≦CMp>I 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 literal 0 HcmV?d00001 diff --git a/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/interfaces.pas b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/interfaces.pas new file mode 100644 index 00000000..4c39e518 --- /dev/null +++ b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/interfaces.pas @@ -0,0 +1,66 @@ +{ + /*************************************************************************** + Interfaces.pp - determines what interface to use + ------------------- + + Initial Revision : Thu July 1st CST 1999 + + + ***************************************************************************/ + + ***************************************************************************** + This file is part of the Lazarus Component Library (LCL) + + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** +} + +unit interfaces; + +{$mode objfpc} +{$H+} + +interface + +uses + {$IFDEF UNIX}{$IFNDEF DisableCWString}cwstring,{$ENDIF}{$ENDIF} + InterfaceBase; + +procedure CustomWidgetSetInitialization; +procedure CustomWidgetSetFinalization; + +implementation + +uses + qtint, Forms, xlib; + +function CustomX11ErrorHandler(Display:PDisplay; ErrorEv:PXErrorEvent):longint;cdecl; +begin + {$IFDEF DEBUG} + XError := ErrorEv^.error_code; + WriteLn('Error: ' + IntToStr(XError)); + {$ENDIF} + Result := 0; +end; + +function CustomXIOErrorHandler(Display:PDisplay):longint;cdecl; +begin + Result := 0; +end; + +procedure CustomWidgetSetInitialization; +begin + CreateWidgetset(TQtWidgetSet); + // Install xlib error handlers so that the application won't be terminated + // on non-fatal errors. Must be done after initializing QT. + XSetErrorHandler(@CustomX11ErrorHandler); + XSetIOErrorHandler(@CustomXIOErrorHandler); +end; + +procedure CustomWidgetSetFinalization; +begin + FreeWidgetSet; +end; + +end. diff --git a/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/umainform.lfm b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/umainform.lfm new file mode 100644 index 00000000..23350a96 --- /dev/null +++ b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/umainform.lfm @@ -0,0 +1,145 @@ +object MainForm: TMainForm + Left = 393 + Height = 768 + Top = 250 + Width = 1024 + Caption = 'SimpleOSRBrowser. Initializing...' + ClientHeight = 768 + ClientWidth = 1024 + KeyPreview = True + Position = poScreenCenter + LCLVersion = '4.2.0.0' + OnActivate = FormActivate + OnCloseQuery = FormCloseQuery + OnCreate = FormCreate + OnDestroy = FormDestroy + OnHide = FormHide + OnShow = FormShow + OnWindowStateChange = FormWindowStateChange + object AddressPnl: TPanel + Left = 0 + Height = 26 + Top = 0 + Width = 1024 + Align = alTop + BevelOuter = bvNone + ClientHeight = 26 + ClientWidth = 1024 + TabOrder = 0 + object AddressCb: TComboBox + Left = 0 + Height = 26 + Top = 0 + Width = 965 + Align = alClient + ItemHeight = 0 + ItemIndex = 0 + Items.Strings = ( + 'https://www.google.com' + 'https://www.bing.com' + 'https://duckduckgo.com' + 'https://www.qwant.com' + 'https://yandex.com' + 'https://www.startpage.com' + 'https://www.ecosia.org' + 'https://www.baidu.com' + 'https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending' + 'https://www.w3schools.com/js/tryit.asp?filename=tryjs_win_close' + 'https://www.w3schools.com/js/tryit.asp?filename=tryjs_alert' + 'https://www.w3schools.com/js/tryit.asp?filename=tryjs_loc_assign' + 'https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_style_backgroundcolor' + 'https://www.w3schools.com/Tags/tryit.asp?filename=tryhtml_iframe_name' + 'https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_file' + 'https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_state_throw_error' + 'https://www.htmlquick.com/es/reference/tags/input-file.html' + 'https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file' + 'https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory' + 'https://www.w3schools.com/html/html5_video.asp' + 'http://html5test.com/' + 'https://webrtc.github.io/samples/src/content/devices/input-output/' + 'https://test.webrtc.org/' + 'https://www.browserleaks.com/webrtc' + 'https://shaka-player-demo.appspot.com/demo/' + 'http://webglsamples.org/' + 'https://get.webgl.org/' + 'https://www.briskbard.com' + 'https://www.youtube.com' + 'https://html5demos.com/drag/' + 'https://frames-per-second.appspot.com/' + 'https://www.sede.fnmt.gob.es/certificados/persona-fisica/verificar-estado' + 'https://www.kirupa.com/html5/accessing_your_webcam_in_html5.htm' + 'https://www.xdumaine.com/enumerateDevices/test/' + 'https://dagrs.berkeley.edu/sites/default/files/2020-01/sample.pdf' + 'https://codepen.io/udaymanvar/pen/MWaePBY' + 'https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept' + 'chrome://version/' + 'chrome://net-internals/' + 'chrome://tracing/' + 'chrome://appcache-internals/' + 'chrome://blob-internals/' + 'chrome://view-http-cache/' + 'chrome://credits/' + 'chrome://histograms/' + 'chrome://media-internals/' + 'chrome://kill' + 'chrome://crash' + 'chrome://hang' + 'chrome://shorthang' + 'chrome://gpuclean' + 'chrome://gpucrash' + 'chrome://gpuhang' + 'chrome://extensions-support' + 'chrome://process-internals' + ) + TabOrder = 0 + Text = 'https://www.google.com' + OnEnter = AddressCbEnter + end + object GoBtn: TButton + Left = 965 + Height = 26 + Top = 0 + Width = 59 + Align = alRight + Caption = 'Go' + TabOrder = 1 + OnClick = GoBtnClick + OnEnter = GoBtnEnter + end + end + object Panel1: TBufferPanel + Left = 0 + Height = 742 + Top = 26 + Width = 1024 + Align = alClient + TabOrder = 1 + TabStop = True + OnEnter = Panel1Enter + OnExit = Panel1Exit + OnMouseDown = Panel1MouseDown + OnMouseMove = Panel1MouseMove + OnMouseUp = Panel1MouseUp + OnMouseWheel = Panel1MouseWheel + OnResize = Panel1Resize + OnMouseEnter = Panel1MouseEnter + OnMouseLeave = Panel1MouseLeave + end + object Chromium1: TChromium + OnSetFocus = Chromium1SetFocus + OnTooltip = Chromium1Tooltip + OnCursorChange = Chromium1CursorChange + OnBeforePopup = Chromium1BeforePopup + OnAfterCreated = Chromium1AfterCreated + OnBeforeClose = Chromium1BeforeClose + OnOpenUrlFromTab = Chromium1OpenUrlFromTab + OnGetViewRect = Chromium1GetViewRect + OnGetScreenPoint = Chromium1GetScreenPoint + OnGetScreenInfo = Chromium1GetScreenInfo + OnPopupShow = Chromium1PopupShow + OnPopupSize = Chromium1PopupSize + OnPaint = Chromium1Paint + Left = 101 + Top = 109 + end +end diff --git a/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/umainform.pas b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/umainform.pas new file mode 100644 index 00000000..5d163eeb --- /dev/null +++ b/demos/Lazarus_Linux_QT5/SimpleOSRBrowser/umainform.pas @@ -0,0 +1,833 @@ +unit uMainForm; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, + LMessages, StdCtrls, LCLType, ComCtrls, Types, SyncObjs, + {$IFDEF LCLQT}qt4,{$ENDIF} + {$IFDEF LCLQT5}qt5,{$ENDIF} + {$IFDEF LCLQT6}qt6,{$ENDIF} + uCEFBufferPanel, uCEFChromium, uCEFInterfaces, uCEFTypes; + +type + + { TMainForm } + + TMainForm = class(TForm) + AddressCb: TComboBox; + AddressPnl: TPanel; + Panel1: TBufferPanel; + Chromium1: TChromium; + GoBtn: TButton; + + procedure Panel1Enter(Sender: TObject); + procedure Panel1Exit(Sender: TObject); + procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure Panel1MouseEnter(Sender: TObject); + procedure Panel1MouseLeave(Sender: TObject); + procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); + procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure Panel1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); + procedure Panel1QTKeyPress(Sender: TObject; Event_: QEventH); + procedure Panel1QTKeyRelease(Sender: TObject; Event_: QEventH); + procedure Panel1Resize(Sender: TObject); + + procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser); + procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); + procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; 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: Boolean; var Result: Boolean); + procedure Chromium1CursorChange(Sender: TObject; const browser: ICefBrowser; cursor_: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; var aResult : boolean); + procedure Chromium1GetScreenInfo(Sender: TObject; const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out Result: Boolean); + procedure Chromium1GetScreenPoint(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer; out Result: Boolean); + procedure Chromium1GetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect); + procedure Chromium1OpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean); + procedure Chromium1Paint(Sender: TObject; const browser: ICefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; aWidth, aHeight: Integer); + procedure Chromium1PopupShow(Sender: TObject; const browser: ICefBrowser; aShow: Boolean); + procedure Chromium1PopupSize(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect); + procedure Chromium1SetFocus(Sender: TObject; const browser: ICefBrowser; source: TCefFocusSource; out Result: Boolean); + procedure Chromium1Tooltip(Sender: TObject; const browser: ICefBrowser; var aText: ustring; out Result: Boolean); + + procedure FormActivate(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure FormHide(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure FormWindowStateChange(Sender: TObject); + + procedure Application_OnActivate(Sender: TObject); + procedure Application_OnDeactivate(Sender: TObject); + + procedure AddressCbEnter(Sender: TObject); + procedure GoBtnClick(Sender: TObject); + procedure GoBtnEnter(Sender: TObject); + private + + protected + FPopUpRect : TRect; + FShowPopUp : boolean; + FResizing : boolean; + FPendingResize : boolean; + FCanClose : boolean; + FClosing : boolean; + FResizeCS : TCriticalSection; + FBrowserCS : TCriticalSection; + FPanelCursor : TCursor; + FPanelHint : ustring; + FPanelOffset : TPoint; + + function GetPanelCursor : TCursor; + function GetPanelHint : ustring; + + procedure SetPanelCursor(aValue : TCursor); + procedure SetPanelHint(const aValue : ustring); + + procedure SendCompMessage(aMsg : cardinal; aData: PtrInt = 0); + function getModifiers(Shift: TShiftState): TCefEventFlags; + function GetButton(Button: TMouseButton): TCefMouseButtonType; + procedure DoResize; + procedure UpdatePanelOffset; + + procedure BrowserCreatedMsg(Data: PtrInt); + procedure BrowserCloseFormMsg(Data: PtrInt); + procedure PendingResizeMsg(Data: PtrInt); + procedure PendingInvalidateMsg(Data: PtrInt); + procedure PendingCursorUpdateMsg(Data: PtrInt); + procedure PendingHintUpdateMsg(Data: PtrInt); + + // CEF needs to handle these messages to call TChromium.NotifyMoveOrResizeStarted + procedure WMMove(var Message: TLMMove); message LM_MOVE; + procedure WMSize(var Message: TLMSize); message LM_SIZE; + procedure WMWindowPosChanged(var Message: TLMWindowPosChanged); message LM_WINDOWPOSCHANGED; + + property PanelCursor : TCursor read GetPanelCursor write SetPanelCursor; + property PanelHint : ustring read GetPanelHint write SetPanelHint; + + public + + end; + +var + MainForm: TMainForm; + +procedure CreateGlobalCEFApp; +function StartMainProcess: boolean; + +implementation + +{$R *.lfm} + +uses + Math, + uCEFMiscFunctions, uCEFApplication, uCEFConstants, uCEFBitmapBitBuffer, + uCEFLinuxFunctions; + +const + CEF_UPDATE_CURSOR = $A1D; + CEF_UPDATE_HINT = $A1E; + +var + MainAppEvent : TEventObject; + +{GlobalCEFApp functions} +{%Region} +procedure GlobalCEFApp_OnContextInitialized(); +begin + MainAppEvent.SetEvent; +end; + +procedure CreateGlobalCEFApp; +begin + GlobalCEFApp := TCefApplication.Create; + GlobalCEFApp.LogFile := 'debug.log'; + GlobalCEFApp.LogSeverity := LOGSEVERITY_INFO; + GlobalCEFApp.RootCache := 'RootCache'; + GlobalCEFApp.SetCurrentDir := True; + GlobalCEFApp.DisableZygote := True; + GlobalCEFApp.OnContextInitialized := @GlobalCEFApp_OnContextInitialized; +end; + +function StartMainProcess: boolean; +begin + Result := False; + + if GlobalCEFApp.StartMainProcess then + begin + // Wait until the context is initialized before initializing GTK. + if (MainAppEvent.WaitFor(10000) = wrTimeout) then + CefDebugLog('CEF initialization failure!') + else + Result := True; + end; +end; +{%Endregion} + +{TBufferPanel events} +{%Region} +procedure TMainForm.Panel1Enter(Sender: TObject); +begin + Chromium1.SetFocus(True); +end; + +procedure TMainForm.Panel1Exit(Sender: TObject); +begin + Chromium1.SetFocus(False); +end; + +procedure TMainForm.Panel1MouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +var + TempEvent : TCefMouseEvent; +begin + Panel1.SetFocus; + + TempEvent.x := X; + TempEvent.y := Y; + TempEvent.modifiers := getModifiers(Shift); + DeviceToLogical(TempEvent, Panel1.ScreenScale); + Chromium1.SendMouseClickEvent(@TempEvent, GetButton(Button), False, 1); +end; + +procedure TMainForm.Panel1MouseEnter(Sender: TObject); +var + TempEvent : TCefMouseEvent; + TempPoint : TPoint; +begin + TempPoint := Panel1.ScreenToClient(mouse.CursorPos); + TempEvent.x := TempPoint.x; + TempEvent.y := TempPoint.y; + TempEvent.modifiers := EVENTFLAG_NONE; + DeviceToLogical(TempEvent, Panel1.ScreenScale); + Chromium1.SendMouseMoveEvent(@TempEvent, False); +end; + +procedure TMainForm.Panel1MouseLeave(Sender: TObject); +var + TempEvent : TCefMouseEvent; + TempPoint : TPoint; +begin + TempPoint := Panel1.ScreenToClient(mouse.CursorPos); + TempEvent.x := TempPoint.x; + TempEvent.y := TempPoint.y; + TempEvent.modifiers := EVENTFLAG_NONE; + DeviceToLogical(TempEvent, Panel1.ScreenScale); + Chromium1.SendMouseMoveEvent(@TempEvent, True); +end; + +procedure TMainForm.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, + Y: Integer); +var + TempEvent : TCefMouseEvent; +begin + TempEvent.x := x; + TempEvent.y := y; + TempEvent.modifiers := getModifiers(Shift); + DeviceToLogical(TempEvent, Panel1.ScreenScale); + Chromium1.SendMouseMoveEvent(@TempEvent, False); +end; + +procedure TMainForm.Panel1MouseUp(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +var + TempEvent : TCefMouseEvent; +begin + TempEvent.x := X; + TempEvent.y := Y; + TempEvent.modifiers := getModifiers(Shift); + DeviceToLogical(TempEvent, Panel1.ScreenScale); + Chromium1.SendMouseClickEvent(@TempEvent, GetButton(Button), True, 1); +end; + +procedure TMainForm.Panel1MouseWheel(Sender: TObject; Shift: TShiftState; + WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); +var + TempEvent : TCefMouseEvent; +begin + TempEvent.x := MousePos.x; + TempEvent.y := MousePos.y; + TempEvent.modifiers := getModifiers(Shift); + DeviceToLogical(TempEvent, Panel1.ScreenScale); + Chromium1.SendMouseWheelEvent(@TempEvent, 0, WheelDelta); +end; + +procedure TMainForm.Panel1QTKeyPress(Sender: TObject; Event_: QEventH); +var + TempCefEvent : TCefKeyEvent; +begin + QTKeyEventToCEFKeyEvent(QKeyEventH(Event_), TempCefEvent); + + TempCefEvent.kind := KEYEVENT_RAWKEYDOWN; + CefKeyEventLog(TempCefEvent); + Chromium1.SendKeyEvent(@TempCefEvent); + + if AdjustCefKeyCharEvent(QKeyEventH(Event_), TempCefEvent) then + begin + TempCefEvent.kind := KEYEVENT_CHAR; + CefKeyEventLog(TempCefEvent); + Chromium1.SendKeyEvent(@TempCefEvent); + end; +end; + +procedure TMainForm.Panel1QTKeyRelease(Sender: TObject; Event_: QEventH); +var + TempCefEvent : TCefKeyEvent; +begin + QTKeyEventToCEFKeyEvent(QKeyEventH(Event_), TempCefEvent); + + TempCefEvent.kind := KEYEVENT_KEYUP; + CefKeyEventLog(TempCefEvent); + Chromium1.SendKeyEvent(@TempCefEvent); +end; + +procedure TMainForm.Panel1Resize(Sender: TObject); +begin + DoResize; +end; +{%Endregion} + +{TChromium events} +{%Region} +procedure TMainForm.Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser); +begin + // Now the browser is fully initialized we can initialize the UI. + SendCompMessage(CEF_AFTERCREATED); +end; + +procedure TMainForm.Chromium1BeforeClose(Sender: TObject; + const browser: ICefBrowser); +begin + FCanClose := True; + SendCompMessage(CEF_BEFORECLOSE); +end; + +procedure TMainForm.Chromium1BeforePopup(Sender: TObject; + const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; + 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: Boolean; var Result: Boolean); +begin + // For simplicity, this demo blocks all popup windows and new tabs + Result := (targetDisposition in [CEF_WOD_NEW_FOREGROUND_TAB, CEF_WOD_NEW_BACKGROUND_TAB, CEF_WOD_NEW_POPUP, CEF_WOD_NEW_WINDOW]); +end; + +procedure TMainForm.Chromium1CursorChange(Sender: TObject; + const browser: ICefBrowser; cursor_: TCefCursorHandle; + cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; + var aResult : boolean); +begin + PanelCursor := CefCursorToWindowsCursor(cursorType); + aResult := True; + + SendCompMessage(CEF_UPDATE_CURSOR); +end; + +procedure TMainForm.Chromium1GetScreenInfo(Sender: TObject; + const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out + Result: Boolean); +var + TempRect : TCEFRect; + TempScale : single; +begin + TempScale := Panel1.ScreenScale; + TempRect.x := 0; + TempRect.y := 0; + TempRect.width := DeviceToLogical(Panel1.Width, TempScale); + TempRect.height := DeviceToLogical(Panel1.Height, TempScale); + + screenInfo.device_scale_factor := TempScale; + screenInfo.depth := 0; + screenInfo.depth_per_component := 0; + screenInfo.is_monochrome := Ord(False); + screenInfo.rect := TempRect; + screenInfo.available_rect := TempRect; + + Result := True; +end; + +procedure TMainForm.Chromium1GetScreenPoint(Sender: TObject; + const browser: ICefBrowser; viewX, viewY: Integer; var screenX, + screenY: Integer; out Result: Boolean); +begin + 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 TMainForm.Chromium1GetViewRect(Sender: TObject; + const browser: ICefBrowser; var rect: TCefRect); +var + TempScale : single; +begin + TempScale := Panel1.ScreenScale; + rect.x := 0; + rect.y := 0; + rect.width := DeviceToLogical(Panel1.Width, TempScale); + rect.height := DeviceToLogical(Panel1.Height, TempScale); +end; + +procedure TMainForm.Chromium1OpenUrlFromTab(Sender: TObject; + const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; + targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out + Result: Boolean); +begin + // For simplicity, this demo blocks all popup windows and new tabs + Result := (targetDisposition in [CEF_WOD_NEW_FOREGROUND_TAB, CEF_WOD_NEW_BACKGROUND_TAB, CEF_WOD_NEW_POPUP, CEF_WOD_NEW_WINDOW]); +end; + +procedure TMainForm.Chromium1Paint(Sender: TObject; const browser: ICefBrowser; + type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; + const dirtyRects: PCefRectArray; const buffer: Pointer; aWidth, aHeight: Integer + ); +var + src, dst: PByte; + i, j, TempLineSize, TempSrcOffset, TempDstOffset, SrcStride : Integer; + n : NativeUInt; + TempWidth, TempHeight : integer; + TempBufferBits : Pointer; + TempForcedResize : boolean; + TempBitmap : TCEFBitmapBitBuffer; + TempSrcRect : TRect; +begin + try + FResizeCS.Acquire; + TempForcedResize := False; + + if Panel1.BeginBufferDraw then + begin + if (type_ = PET_POPUP) then + begin + Panel1.UpdateOrigPopupBufferDimensions(aWidth, aHeight); + + TempBitmap := Panel1.OrigPopupBuffer; + TempWidth := Panel1.OrigPopupBufferWidth; + TempHeight := Panel1.OrigPopupBufferHeight; + end + else + begin + TempForcedResize := Panel1.UpdateOrigBufferDimensions(aWidth, aHeight) or + not(Panel1.BufferIsResized(False)); + + TempBitmap := Panel1.OrigBuffer; + TempWidth := Panel1.OrigBufferWidth; + TempHeight := Panel1.OrigBufferHeight; + end; + + SrcStride := aWidth * SizeOf(TRGBQuad); + n := 0; + + while (n < dirtyRectsCount) do + begin + if (dirtyRects^[n].x >= 0) and (dirtyRects^[n].y >= 0) then + begin + TempLineSize := min(dirtyRects^[n].width, TempWidth - dirtyRects^[n].x) * SizeOf(TRGBQuad); + + if (TempLineSize > 0) then + begin + TempSrcOffset := ((dirtyRects^[n].y * aWidth) + dirtyRects^[n].x) * SizeOf(TRGBQuad); + TempDstOffset := (dirtyRects^[n].x * SizeOf(TRGBQuad)); + + src := @PByte(buffer)[TempSrcOffset]; + + i := 0; + j := min(dirtyRects^[n].height, TempHeight - dirtyRects^[n].y); + + while (i < j) do + begin + TempBufferBits := TempBitmap.Scanline[dirtyRects^[n].y + i]; + dst := @PByte(TempBufferBits)[TempDstOffset]; + + Move(src^, dst^, TempLineSize); + + Inc(src, SrcStride); + inc(i); + end; + end; + end; + + inc(n); + end; + + if FShowPopup then + begin + TempSrcRect := Rect(0, 0, + FPopUpRect.Right - FPopUpRect.Left, + FPopUpRect.Bottom - FPopUpRect.Top); + + Panel1.DrawOrigPopupBuffer(TempSrcRect, FPopUpRect); + end; + + Panel1.EndBufferDraw; + + SendCompMessage(CEF_PENDINGINVALIDATE); + + if (type_ = PET_VIEW) then + begin + if TempForcedResize or FPendingResize then + SendCompMessage(CEF_PENDINGRESIZE); + + FResizing := False; + FPendingResize := False; + end; + end; + finally + FResizeCS.Release; + end; +end; + +procedure TMainForm.Chromium1PopupShow(Sender: TObject; const browser: ICefBrowser; aShow: Boolean); +begin + if aShow then + FShowPopUp := True + else + begin + FShowPopUp := False; + FPopUpRect := rect(0, 0, 0, 0); + + if (Chromium1 <> nil) then Chromium1.Invalidate(PET_VIEW); + end; +end; + +procedure TMainForm.Chromium1PopupSize(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect); +begin + LogicalToDevice(rect^, Panel1.ScreenScale); + + FPopUpRect.Left := rect^.x; + FPopUpRect.Top := rect^.y; + FPopUpRect.Right := rect^.x + rect^.width - 1; + FPopUpRect.Bottom := rect^.y + rect^.height - 1; +end; + +procedure TMainForm.Chromium1SetFocus(Sender: TObject; const browser: ICefBrowser; + source: TCefFocusSource; out Result: Boolean); +begin + Result := not(Panel1.Focused); +end; + +procedure TMainForm.Chromium1Tooltip(Sender: TObject; const browser: ICefBrowser; var aText: ustring; out Result: Boolean); +begin + PanelHint := aText; + Result := True; + + SendCompMessage(CEF_UPDATE_HINT); +end; +{%Endregion} + +{TForm events} +{%Region} +procedure TMainForm.FormActivate(Sender: TObject); +begin + // This will trigger the AfterCreated event when the browser is fully + // initialized and ready to receive commands. + + // GlobalCEFApp.GlobalContextInitialized has to be TRUE before creating any browser + // If it's not initialized yet, we use a simple timer to create the browser later. + + // Linux needs a visible form to create a browser so we need to use the + // TForm.OnActivate event instead of the TForm.OnShow event + + if not(Chromium1.Initialized) then + begin + // We have to update the DeviceScaleFactor here to get the scale of the + // monitor where the main application form is located. + GlobalCEFApp.UpdateDeviceScaleFactor; + + UpdatePanelOffset; + + // opaque white background color + Chromium1.Options.BackgroundColor := CefColorSetARGB($FF, $FF, $FF, $FF); + Chromium1.DefaultURL := UTF8Decode(AddressCb.Text); + + Chromium1.CreateBrowser; + end; +end; + +procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: boolean); +begin + CanClose := FCanClose; + + if not(FClosing) then + begin + FClosing := True; + Visible := False; + Chromium1.CloseBrowser(True); + end; +end; + +procedure TMainForm.FormCreate(Sender: TObject); +begin + FPopUpRect := rect(0, 0, 0, 0); + FShowPopUp := False; + FResizing := False; + FPendingResize := False; + FCanClose := False; + FClosing := False; + FResizeCS := TCriticalSection.Create; + FBrowserCS := TCriticalSection.Create; + + Panel1.CopyOriginalBuffer := True; + Panel1.OnQtKeyPress := @Panel1QTKeyPress; + Panel1.OnQtKeyRelease := @Panel1QTKeyRelease; + + Application.OnActivate := @Application_OnActivate; + Application.OnDeactivate := @Application_OnDeactivate; +end; + +procedure TMainForm.FormDestroy(Sender: TObject); +begin + if (FResizeCS <> nil) then FreeAndNil(FResizeCS); + if (FBrowserCS <> nil) then FreeAndNil(FBrowserCS); +end; + +procedure TMainForm.FormHide(Sender: TObject); +begin + Chromium1.SetFocus(False); + Chromium1.WasHidden(True); +end; + +procedure TMainForm.FormShow(Sender: TObject); +begin + Chromium1.WasHidden(False); + Chromium1.SetFocus(Panel1.Focused); +end; + +procedure TMainForm.FormWindowStateChange(Sender: TObject); +begin + if (WindowState = wsMinimized) then + begin + Chromium1.SetFocus(False); + Chromium1.WasHidden(True); + end + else + begin + Chromium1.WasHidden(False); + Chromium1.SetFocus(Panel1.Focused); + end; +end; +{%Endregion} + +{TApplication events} +{%Region} +procedure TMainForm.Application_OnActivate(Sender: TObject); +begin + Chromium1.SetFocus(Panel1.Focused); +end; + +procedure TMainForm.Application_OnDeactivate(Sender: TObject); +begin + Chromium1.SetFocus(False); +end; +{%Endregion} + +{Other events} +{%Region} +procedure TMainForm.AddressCbEnter(Sender: TObject); +begin + Chromium1.SetFocus(False); +end; + +procedure TMainForm.GoBtnClick(Sender: TObject); +begin + FResizeCS.Acquire; + FResizing := False; + FPendingResize := False; + FResizeCS.Release; + + Chromium1.LoadURL(UTF8Decode(AddressCb.Text)) +end; + +procedure TMainForm.GoBtnEnter(Sender: TObject); +begin + Chromium1.SetFocus(False); +end; +{%Endregion} + +{Getters and setters} +{%Region} +function TMainForm.GetPanelCursor : TCursor; +begin + try + FBrowserCS.Acquire; + Result := FPanelCursor; + finally + FBrowserCS.Release; + end; +end; + +function TMainForm.GetPanelHint : ustring; +begin + try + FBrowserCS.Acquire; + Result := FPanelHint; + finally + FBrowserCS.Release; + end; +end; + +procedure TMainForm.SetPanelCursor(aValue : TCursor); +begin + try + FBrowserCS.Acquire; + FPanelCursor := aValue; + finally + FBrowserCS.Release; + end; +end; + +procedure TMainForm.SetPanelHint(const aValue : ustring); +begin + try + FBrowserCS.Acquire; + FPanelHint := aValue; + finally + FBrowserCS.Release; + end; +end; +{%Endregion} + +{Misc functions} +{%Region} +procedure TMainForm.SendCompMessage(aMsg : cardinal; aData: PtrInt); +begin + case aMsg of + CEF_AFTERCREATED : Application.QueueAsyncCall(@BrowserCreatedMsg, aData); + CEF_BEFORECLOSE : Application.QueueAsyncCall(@BrowserCloseFormMsg, aData); + CEF_PENDINGRESIZE : Application.QueueAsyncCall(@PendingResizeMsg, aData); + CEF_PENDINGINVALIDATE : Application.QueueAsyncCall(@PendingInvalidateMsg, aData); + CEF_UPDATE_CURSOR : Application.QueueAsyncCall(@PendingCursorUpdateMsg, aData); + CEF_UPDATE_HINT : Application.QueueAsyncCall(@PendingHintUpdateMsg, aData); + end; +end; + +function TMainForm.getModifiers(Shift: TShiftState): TCefEventFlags; +begin + Result := EVENTFLAG_NONE; + + if (ssShift in Shift) then Result := Result or EVENTFLAG_SHIFT_DOWN; + if (ssAlt in Shift) then Result := Result or EVENTFLAG_ALT_DOWN; + if (ssCtrl in Shift) then Result := Result or EVENTFLAG_CONTROL_DOWN; + if (ssLeft in Shift) then Result := Result or EVENTFLAG_LEFT_MOUSE_BUTTON; + if (ssRight in Shift) then Result := Result or EVENTFLAG_RIGHT_MOUSE_BUTTON; + if (ssMiddle in Shift) then Result := Result or EVENTFLAG_MIDDLE_MOUSE_BUTTON; +end; + +function TMainForm.GetButton(Button: TMouseButton): TCefMouseButtonType; +begin + case Button of + TMouseButton.mbRight : Result := MBT_RIGHT; + TMouseButton.mbMiddle : Result := MBT_MIDDLE; + else Result := MBT_LEFT; + end; +end; + +procedure TMainForm.DoResize; +begin + try + FResizeCS.Acquire; + + if FResizing then + FPendingResize := True + else + if Panel1.BufferIsResized then + Chromium1.Invalidate(PET_VIEW) + else + begin + FResizing := True; + Chromium1.WasResized; + end; + finally + FResizeCS.Release; + end; +end; + +procedure TMainForm.UpdatePanelOffset; +var + TempPoint : TPoint; +begin + try + FBrowserCS.Acquire; + TempPoint.x := 0; + TempPoint.y := 0; + FPanelOffset := Panel1.ClientToScreen(TempPoint); + finally + FBrowserCS.Release; + end; +end; +{%Endregion} + +{Message handlers} +{%Region} +procedure TMainForm.BrowserCreatedMsg(Data: PtrInt); +begin + Caption := 'Simple OSR Browser'; + AddressPnl.Enabled := True; + + Chromium1.SetFocus(Panel1.Focused); + Chromium1.NotifyMoveOrResizeStarted; +end; + +procedure TMainForm.BrowserCloseFormMsg(Data: PtrInt); +begin + Close; +end; + +procedure TMainForm.PendingResizeMsg(Data: PtrInt); +begin + DoResize; +end; + +procedure TMainForm.PendingInvalidateMsg(Data: PtrInt); +begin + Panel1.Invalidate; +end; + +procedure TMainForm.PendingCursorUpdateMsg(Data: PtrInt); +begin + Panel1.Cursor := PanelCursor; +end; + +procedure TMainForm.PendingHintUpdateMsg(Data: PtrInt); +begin + Panel1.hint := UTF8Encode(PanelHint); + Panel1.ShowHint := (length(Panel1.hint) > 0); +end; + +procedure TMainForm.WMMove(var Message: TLMMove); +begin + inherited; + UpdatePanelOffset; + Chromium1.NotifyMoveOrResizeStarted; +end; + +procedure TMainForm.WMSize(var Message: TLMSize); +begin + inherited; + UpdatePanelOffset; + Chromium1.NotifyMoveOrResizeStarted; +end; + +procedure TMainForm.WMWindowPosChanged(var Message: TLMWindowPosChanged); +begin + inherited; + UpdatePanelOffset; + Chromium1.NotifyMoveOrResizeStarted; +end; +{%Endregion} + +initialization + MainAppEvent := TEventObject.Create(nil, True, False, 'MainAppEvent'); + +finalization + if assigned(MainAppEvent) then + FreeAndNil(MainAppEvent); + +end. + diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json index a48e2971..c7b1e6e8 100644 --- a/update_CEF4Delphi.json +++ b/update_CEF4Delphi.json @@ -2,7 +2,7 @@ "UpdateLazPackages" : [ { "ForceNotify" : true, - "InternalVersion" : 789, + "InternalVersion" : 790, "Name" : "cef4delphi_lazarus.lpk", "Version" : "140.1.14" }