diff --git a/demos/Lazarus_any_OS/BrowserWindow/uBrowserWindow.pas b/demos/Lazarus_any_OS/BrowserWindow/uBrowserWindow.pas
index 738a26cc..64411ba4 100644
--- a/demos/Lazarus_any_OS/BrowserWindow/uBrowserWindow.pas
+++ b/demos/Lazarus_any_OS/BrowserWindow/uBrowserWindow.pas
@@ -48,7 +48,7 @@ uses
SysUtils, Messages, Forms, Controls,
Dialogs, ExtCtrls, StdCtrls, LMessages,
uCEFTypes, uCEFInterfaces,
- uCEFWorkScheduler, uCEFLazarusBrowserWindow, Classes;
+ uCEFWorkScheduler, uCEFBrowserWindow, Classes;
type
@@ -58,7 +58,7 @@ type
AddressEdt: TComboBox;
GoBtn: TButton;
AddressPnl: TPanel;
- LazarusBrowserWindow1: TLazarusBrowserWindow;
+ LazarusBrowserWindow1: TBrowserWindow;
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: Boolean; var Result: Boolean);
procedure Chromium1OpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
diff --git a/demos/Lazarus_any_OS/BrowserWindowDom/uBrowserWindowDom.lfm b/demos/Lazarus_any_OS/BrowserWindowDom/uBrowserWindowDom.lfm
index 09e1ab2d..c3acec0b 100644
--- a/demos/Lazarus_any_OS/BrowserWindowDom/uBrowserWindowDom.lfm
+++ b/demos/Lazarus_any_OS/BrowserWindowDom/uBrowserWindowDom.lfm
@@ -61,7 +61,7 @@ object Form1: TForm1
Text = 'https://www.google.com'
end
end
- object LazarusBrowserWindow1: TLazarusBrowserWindow
+ object LazarusBrowserWindow1: TBrowserWindow
Left = 0
Height = 566
Top = 23
diff --git a/demos/Lazarus_any_OS/BrowserWindowDom/uBrowserWindowDom.pas b/demos/Lazarus_any_OS/BrowserWindowDom/uBrowserWindowDom.pas
index 8dd1e314..e6292bf5 100644
--- a/demos/Lazarus_any_OS/BrowserWindowDom/uBrowserWindowDom.pas
+++ b/demos/Lazarus_any_OS/BrowserWindowDom/uBrowserWindowDom.pas
@@ -48,7 +48,7 @@ uses
SysUtils, Messages, Forms, Controls,
Dialogs, ExtCtrls, StdCtrls, LMessages, Menus,
uCEFTypes, uCEFInterfaces, uHelperProcessDom,
- uCEFWorkScheduler, uCEFLazarusBrowserWindow, uCEFProcessMessage, Classes;
+ uCEFWorkScheduler, uCEFBrowserWindow, uCEFProcessMessage, Classes;
type
@@ -58,7 +58,7 @@ type
AddressEdt: TComboBox;
GoBtn: TButton;
AddressPnl: TPanel;
- LazarusBrowserWindow1: TLazarusBrowserWindow;
+ LazarusBrowserWindow1: TBrowserWindow;
mDomHere: TMenuItem;
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: Boolean; var Result: Boolean);
diff --git a/demos/Lazarus_any_OS/BrowserWindowEx/uBrowserWindowEx.pas b/demos/Lazarus_any_OS/BrowserWindowEx/uBrowserWindowEx.pas
index c6007c1a..3b240230 100644
--- a/demos/Lazarus_any_OS/BrowserWindowEx/uBrowserWindowEx.pas
+++ b/demos/Lazarus_any_OS/BrowserWindowEx/uBrowserWindowEx.pas
@@ -48,7 +48,7 @@ uses
SysUtils, Messages, Forms, Controls,
Dialogs, ExtCtrls, StdCtrls, LMessages, Buttons,
uCEFTypes, uCEFInterfaces,
- uCEFWorkScheduler, uCEFLazarusBrowserWindow, Classes;
+ uCEFWorkScheduler, uCEFBrowserWindow, Classes;
type
@@ -98,7 +98,7 @@ type
procedure MaybeTerminateApp(Sender: TObject);
procedure MaybeCloseApp(Sender: TObject);
protected
- FBrowserLeft, FBrowserRight: TLazarusBrowserWindow;
+ FBrowserLeft, FBrowserRight: TBrowserWindow;
FClosingBrowsers: TList;
{$IFDEF WINDOWS}
@@ -150,7 +150,7 @@ uses
procedure TForm1.OpenBtnLeftClick(Sender: TObject);
begin
- FBrowserLeft := TLazarusBrowserWindow.Create(Self);
+ FBrowserLeft := TBrowserWindow.Create(Self);
FBrowserLeft.Chromium.OnBeforePopup := @Chromium1BeforePopup;
FBrowserLeft.Chromium.OnOpenUrlFromTab := @Chromium1OpenUrlFromTab;
FBrowserLeft.OnBrowserCreated := @LeftBrowserCreated;
@@ -191,7 +191,7 @@ end;
procedure TForm1.OpenBtnRightClick(Sender: TObject);
begin
- FBrowserRight := TLazarusBrowserWindow.Create(Self);
+ FBrowserRight := TBrowserWindow.Create(Self);
FBrowserRight.Chromium.OnBeforePopup := @Chromium1BeforePopup;
FBrowserRight.Chromium.OnOpenUrlFromTab := @Chromium1OpenUrlFromTab;
FBrowserRight.OnBrowserCreated := @RightBrowserCreated;
diff --git a/demos/Lazarus_any_OS/BrowserWindowOsrDom/uBrowserWindowDom.pas b/demos/Lazarus_any_OS/BrowserWindowOsrDom/uBrowserWindowDom.pas
index 7c4437da..a14264db 100644
--- a/demos/Lazarus_any_OS/BrowserWindowOsrDom/uBrowserWindowDom.pas
+++ b/demos/Lazarus_any_OS/BrowserWindowOsrDom/uBrowserWindowDom.pas
@@ -47,8 +47,8 @@ uses
uCEFLazarusCocoa, // required for Cocoa
SysUtils, Messages, Forms, Controls, Dialogs, ExtCtrls, StdCtrls, LMessages,
Menus, Graphics, uCEFTypes, uCEFInterfaces, uHelperProcessDom,
- uCEFWorkScheduler, uCEFLazarusBrowserWindow, uCEFProcessMessage,
- uCEFLazarusOsrBrowserWindow, Classes;
+ uCEFWorkScheduler, uCEFBrowserWindow, uCEFProcessMessage,
+ uCEFOsrBrowserWindow, Classes;
type
@@ -58,7 +58,7 @@ type
AddressEdt: TComboBox;
GoBtn: TButton;
AddressPnl: TPanel;
- LazarusOsrBrowserWindow1: TLazarusOsrBrowserWindow;
+ LazarusOsrBrowserWindow1: TOsrBrowserWindow;
mDomHere: TMenuItem;
MenuItem1: TMenuItem;
PopupMenu1: TPopupMenu;
diff --git a/packages/cef4delphi_lazarus.lpk b/packages/cef4delphi_lazarus.lpk
index c46187eb..beca2211 100644
--- a/packages/cef4delphi_lazarus.lpk
+++ b/packages/cef4delphi_lazarus.lpk
@@ -833,21 +833,21 @@
-
+
-
+
-
+
-
+
-
+
diff --git a/packages/cef4delphi_lazarus.pas b/packages/cef4delphi_lazarus.pas
index e5dcc2ac..12075fda 100644
--- a/packages/cef4delphi_lazarus.pas
+++ b/packages/cef4delphi_lazarus.pas
@@ -66,7 +66,7 @@ uses
uCEFPrintDialogCallback, uCEFPrintHandler, uCEFPrintJobCallback,
uCEFLinuxFunctions, uCEFLinuxTypes, uCEFLinuxConstants,
uCEFWorkSchedulerQueueThread, uCEFLinkedWinControlBase, uCEFLazarusCocoa,
- uCEFLazarusBrowserWindow, uCEFLazApplication, uCEFLazarusOsrBrowserWindow,
+ uCEFBrowserWindow, uCEFLazApplication, uCEFOsrBrowserWindow,
LazarusPackageIntf;
implementation
@@ -90,9 +90,8 @@ begin
RegisterUnit('uCEFPanelComponent', @uCEFPanelComponent.Register);
RegisterUnit('uCEFScrollViewComponent', @uCEFScrollViewComponent.Register);
RegisterUnit('uCEFTextfieldComponent', @uCEFTextfieldComponent.Register);
- RegisterUnit('uCEFLazarusBrowserWindow', @uCEFLazarusBrowserWindow.Register);
- RegisterUnit('uCEFLazarusOsrBrowserWindow',
- @uCEFLazarusOsrBrowserWindow.Register);
+ RegisterUnit('uCEFBrowserWindow', @uCEFBrowserWindow.Register);
+ RegisterUnit('uCEFOsrBrowserWindow', @uCEFOsrBrowserWindow.Register);
end;
initialization
diff --git a/source/res/tlazarusbrowserwindow.lrs b/source/res/tbrowserwindow.lrs
similarity index 100%
rename from source/res/tlazarusbrowserwindow.lrs
rename to source/res/tbrowserwindow.lrs
diff --git a/source/res/tosrbrowserwindow.lrs b/source/res/tosrbrowserwindow.lrs
new file mode 100644
index 00000000..9cb2f93d
--- /dev/null
+++ b/source/res/tosrbrowserwindow.lrs
@@ -0,0 +1,38 @@
+LazarusResources.Add('tlazarusbrowserwindow','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#2#0#0#0'o'#21#170#175
+ +#0#0#0#9'pHYs'#0#0#13#215#0#0#13#215#1'B('#155'x'#0#0#0#7'tIME'#7#226#5#11#10
+ +#31#18#187#205#226'X'#0#0#3#10'IDAT8'#203#173#149'Ml'#27'U'#16#199'g'#158'7'
+ +#222#197'Qk'#183'IIBl#'#156'JM'#12'V'#137#168#16'E *8Qn'#17' '#142#168#226
+ +#200#181#189'p'#228#128#212'['#213#3'\'#171#194#165'= TQ'#129'P'#131#26#138
+ +'d'#167#20'PE'#212'H'#9'_'#18'i'#226#218#241'G'#214'~'#187#222'}3'#195'a#w'
+ +#243'Q)'#144#206'i5o'#222'_3'#191#153'y'#139'"'#2#143#195','#215'u'#23#23#23
+ +#247#169'R,'#22#161'\.'#19#145#236#195#136#168'\.+"RJ'#237''''#29#165#20#17
+ +#237'I'#162'g'#246#192#232'Q'#7'k.\-'#223#191#241#253'M'#1#4#128#4#192#169
+ +#215'_}'#231#197#241#177#131#143#22'b'#230'm'#222'Oo5'#191#190'v'#205'NZ'#153
+ +'L'#26#5#1#128#133'ggg'#175'_'#15#222#255#224#204#187#147#187'4Z'#1#128#136
+ +'p'#204'.'#220'l^'#186#252#133#149't'#208'Jv'#180#239'j'#175#165#187#237#142
+ +'6'#146#224'D'#242#147#243#23#206']Y'#142#199'G'#3#180#153'Q'#127#154'j'#30
+ +#206#207#223'N$'#157#182#246#200#176#31#154#227#133#209#3#169#228'j'#203#183
+ +#5#6#149#12#165#7#239#222#254'a'#253#244'3'#135#156#205'+'#136#184')'#20'e'
+ +#20'y'#231#254#30'('#30'+'#212'j'#235'n'#167'{4w'#248#243#143#222'^m'#19#139
+ +'d3'#214#221#127#186':'#228#148'm'#245#180'k'#148'b'#14#251']'#3#0'+R!'#162
+ +#200'['#249'y!?>'#246#236'sS_~'#245#237#220#197'3'#31'_Y'#178#7#20'"z~xvfb'
+ +#249#129#7#28#218#142#179#244#231#253'L'#225'p'#31#144#136#168#168#180'X'#193
+ +'@l'#242#217#209#247'N'#191#242#203#239#27#141#166#214':'#208#186#215'r{'#183
+ +'~'#171#167#146#9'f'#16#129'-P'#153'w)'#141'X'#136#152#133#166'&'''#218#186
+ +'Wk{'#134#24#17'Z:'#232#6#6#128#1#0#1#12#131'!V'#24'+'#173#159'Q$'#20#132#20
+ +#24#177'mY'#217#8'_'#155#28'Zu'#189#7']'#31#1#12'K'#169#144#209#1'#'#2#3#244
+ +#136'@'#152#5#250#211'cE*}F'''#166#167#23#238'-'#140#28'9d)u'#227#158#251#217
+ +#135'/|sgMD'#222'x~'#196'0'#136#0' 4'#154#237'\6K'#180#209#135#205#204#219#25
+ +#189'<'#214#233't}'#207'7'#134#184#222#9#175#222'i'#13#13#165#237#212#224#210
+ +#154'oH'#16' 4'#208#236#132#25#232'lc'#180'} '#135#147#193'K'''#166'W'#170'u'
+ +#207#15'{'#129#17#162#229#170'n'#235#224#216'S'#131'!'#177#14#229#143#149'Zv'
+ +'|'#212#134'`'#247#129#140'o'#201'['#185#134#147'(}'#247#227#175#169''''#236
+ +'t'#250'`h'#248#228#241#225#182'G'#213'zk'#221#13#158#206#231'rV3'#190'T'#15
+ +#187#22'g'#20#217#169#145'F'#241#205#137#185'j'#166'2'#255#211#147#233#129
+ +#191'V'#209#13'h'#234'h'#225#228#145#214#1#171#190'5v'#171#208#206#189#29#182
+ +'{3'#249#234'L>'#23#243'U'#1'`G '#254#5'Ixq'#26'FW'#221'b'#0#0#0#0'IEN'
+ +'D'#174'B`'#130
+]);
diff --git a/source/uceflazarusbrowserwindow.pas b/source/uCEFBrowserWindow.pas
similarity index 73%
rename from source/uceflazarusbrowserwindow.pas
rename to source/uCEFBrowserWindow.pas
index f697e74f..e6c787ff 100644
--- a/source/uceflazarusbrowserwindow.pas
+++ b/source/uCEFBrowserWindow.pas
@@ -35,7 +35,7 @@
*
*)
-unit uCEFLazarusBrowserWindow;
+unit uCEFBrowserWindow;
{$mode objfpc}{$H+}
{$i cef.inc}
@@ -57,14 +57,26 @@ type
only close once that event was finished.
*)
- { TLazChromium }
+ { TEmbeddedChromium
- TLazChromium = class(TChromium)
+ 1) TEmbeddedChromium keeps track of the browser while it is created.
+ This allows for CloseBrowser to function, even if the Browser object is not
+ yet known.
+ Also calls to "LoadUrl" are cached until the browser object is created.
+
+ 2) TEmbeddedChromium adds InternalEvents that can be hooked by the
+ component that owns the TEmbeddedChromium.
+ This means the default published events are available to the end user.
+ Published events that should not be available are hidden via THiddenPropertyEditor
+ * Hidden event properties must not be assigned by any end user code. *
+ }
+
+ TEmbeddedChromium = class(TChromium)
private type
- TLazChromiumState = (csNoBrowser, csCreatingBrowser, csHasBrowser, csClosingBrowser, csCloseAfterCreate);
+ TChromiumBrowserState = (csNoBrowser, csCreatingBrowser, csHasBrowser, csClosingBrowser, csCloseAfterCreate);
private
FInternalOnGotFocus: TOnGotFocus;
- FState : TLazChromiumState;
+ FState : TChromiumBrowserState;
FInternalOnBrowserClosed : TNotifyEvent;
FInternalOnBrowserCreated : TNotifyEvent;
@@ -108,7 +120,8 @@ type
property HasBrowser: Boolean read GetHasBrowser; // Includes browser in creation
property IsClosing : Boolean read GetIsClosing;
- (* - Events to be called in main thread
+ (* - Events for use by the Owning component ONLY
+ - Events are called in main thread
- OnBrowserCreated: the parent event may be called when procedure Initialized is still false.
- OnBrowserCreated: may not be called, if the CloseBrowser has already been called
*)
@@ -117,7 +130,7 @@ type
property InternalOnGotFocus : TOnGotFocus read FInternalOnGotFocus write FInternalOnGotFocus;
end;
- TLazarusBrowserWindow = class;
+ TBrowserWindow = class;
{ TChromiumWrapper }
@@ -125,9 +138,9 @@ type
protected type
TWrapperState = (wsNone, wsWaitingForClose, wsSentCloseEventAfterWait, wsDestroyAfterWait);
protected
- FChromium : TLazChromium;
+ FChromium : TEmbeddedChromium;
FWrapperState : TWrapperState;
- FBrowserWindow : TLazarusBrowserWindow;
+ FBrowserWindow : TBrowserWindow;
procedure DoOnAfterCreated(Sender: TObject);
procedure DoOnBeforeClose(Sender: TObject);
@@ -139,7 +152,7 @@ type
procedure MaybeDestroy;
public
- constructor Create(AOwner: TLazarusBrowserWindow); reintroduce;
+ constructor Create(AOwner: TBrowserWindow); reintroduce;
destructor Destroy; override;
function CreateBrowser: boolean;
@@ -147,23 +160,64 @@ type
procedure CloseBrowser(aForceClose: boolean);
function IsClosed: boolean;
(* WaitForBrowserClosed calls ProcessMessages.
- It therefore is possible that the TLazarusBrowserWindow will be destroyed
+ It therefore is possible that the TBrowserWindow will be destroyed
when this method returns.
It is the callers responsibility to take any necessary precaution.
*)
procedure WaitForBrowserClosed;
published
- property Chromium: TLazChromium read FChromium;
+ property Chromium: TEmbeddedChromium read FChromium;
end;
- { TLazarusBrowserWindow }
+ { TBrowserWindow
- (* On MacOs TLazarusBrowserWindow must wait for OnBrowserClosed before it can
- be destroyed or before its handle can be closed
- *)
+ A simple "drop on the Form" component for an full embedded browser.
- TLazarusBrowserWindow = class(TCEFLinkedWinControlBase)
+ The component handles most events required by CEF.
+ The only additions needed to be made by the User in their code are:
+
+ * Implement TForm.OnCloseQuery
+ CEF must be able to destroy the browser, before the main form is closed.
+ (That is while the Form still has a Handle, and the event loop is still
+ running)
+ It is adviced to do the same for any other form (other than the main form).
+
+ TForm.OnCloseQuery should call (for each TBrowserWindow)
+ TBrowserWindow.CloseBrowser(True);
+ The Form can be allowed to close by setting (checking for all BrowserWindows)
+ CanClose := BrowserWindow.IsClosed;
+
+ On Windows and Linux it is also possible to Destroy the TBrowserWindow.
+ This will wait for the browser to close, and after that the form can be closed.
+ - However, this must be done in OnCloseQuery (or before).
+ - Once TForm.Destroy is called, it is to late. By that time the event loop
+ no longer runs.
+
+ *** IMPORTANT: (MacOS) ***
+ On MacOs CloseBrowser() must be called, and the *event* must be awaited.
+ Neither destroying the component, nor waiting with App.ProcessMessages will
+ work.
+ On MacOS, CEF will not finish until the OnCloseQuery event returned to the
+ main event loop. (Hence ProcessMessage does not work).
+ The same is true for any action taken in OnClick or other event.
+ CEF always waits for any event to return to the main event loop.
+ See also the BrowserWindowEX example how that affect modal forms.
+
+ * Implement TBrowserWindow.OnBrowserClosed
+ If TForm.OnCloseQuery called CloseBrowser, this callback can be used to
+ call Form.Close again (the callback should check if the browser was
+ closed by OnCloseQuery.
+
+ * On Windows:
+ handle the WM_ENTERMENULOOP and WM_EXITMENULOOP, as shown in examples
+
+ * Optional prevent pop-up windows by implementing
+ Chromium.BeforePopup
+ Chromium.OpenUrlFromTab
+ }
+
+ TBrowserWindow = class(TCEFLinkedWinControlBase)
private
FChromiumWrapper : TChromiumWrapper;
@@ -173,7 +227,7 @@ type
procedure DoCreateBrowser(Sender: TObject);
procedure DoCreateBrowserAfterContext(Sender: TObject);
- function GetLazChromium: TLazChromium;
+ function GetEmbeddedChromium: TEmbeddedChromium;
protected
function GetChromium: TChromium; override;
procedure DestroyHandle; override;
@@ -195,10 +249,10 @@ type
procedure LoadURL(aURL: ustring);
published
- property Chromium: TLazChromium read GetLazChromium;
+ property Chromium: TEmbeddedChromium read GetEmbeddedChromium;
property OnBrowserCreated : TNotifyEvent read FOnBrowserCreated write FOnBrowserCreated;
- (* OnBrowserClosed will not be called, if the TLazarusBrowserWindow is
+ (* OnBrowserClosed will not be called, if the TBrowserWindow is
destroyed/destroying before the browser is closed.
*)
property OnBrowserClosed : TNotifyEvent read FOnBrowserClosed write FOnBrowserClosed;
@@ -210,24 +264,24 @@ procedure Register;
implementation
-{ TLazChromium }
+{ TEmbeddedChromium }
-function TLazChromium.GetIsClosing: Boolean;
+function TEmbeddedChromium.GetIsClosing: Boolean;
begin
Result := FState in [csCloseAfterCreate, csClosingBrowser];
end;
-procedure TLazChromium.SetInternalOnClose(AValue: TOnClose);
+procedure TEmbeddedChromium.SetInternalOnClose(AValue: TOnClose);
begin
inherited OnClose := AValue;
end;
-function TLazChromium.GetHasBrowser: boolean;
+function TEmbeddedChromium.GetHasBrowser: boolean;
begin
Result := (FState <> csNoBrowser) or (inherited GetHasBrowser);
end;
-procedure TLazChromium.doOnBeforeClose(const ABrowser: ICefBrowser);
+procedure TEmbeddedChromium.doOnBeforeClose(const ABrowser: ICefBrowser);
begin
inherited doOnBeforeClose(ABrowser);
@@ -235,7 +289,7 @@ begin
Application.QueueAsyncCall(@DoOnClosed, 0);
end;
-procedure TLazChromium.doOnAfterCreated(const ABrowser: ICefBrowser);
+procedure TEmbeddedChromium.doOnAfterCreated(const ABrowser: ICefBrowser);
begin
inherited doOnAfterCreated(ABrowser);
(* We may still be in Chromium.CreateBrowserSync
@@ -245,20 +299,20 @@ begin
Application.QueueAsyncCall(@DoCreated, 0);
end;
-procedure TLazChromium.doOnGotFocus(const Abrowser: ICefBrowser);
+procedure TEmbeddedChromium.doOnGotFocus(const Abrowser: ICefBrowser);
begin
inherited doOnGotFocus(Abrowser);
if Assigned(FInternalOnGotFocus) then
FInternalOnGotFocus(Self, Abrowser);
end;
-function TLazChromium.MustCreateFocusHandler: boolean;
+function TEmbeddedChromium.MustCreateFocusHandler: boolean;
begin
Result := assigned(FInternalOnGotFocus) or
inherited MustCreateFocusHandler;
end;
-procedure TLazChromium.DoCreated(Data: PtrInt);
+procedure TEmbeddedChromium.DoCreated(Data: PtrInt);
var
u, f: ustring;
begin
@@ -282,25 +336,25 @@ begin
end;
end;
-procedure TLazChromium.DoOnClosed(Data: PtrInt);
+procedure TEmbeddedChromium.DoOnClosed(Data: PtrInt);
begin
if (FInternalOnBrowserClosed <> nil) then
FInternalOnBrowserClosed(Self);
end;
-constructor TLazChromium.Create(AOwner: TComponent);
+constructor TEmbeddedChromium.Create(AOwner: TComponent);
begin
FState := csNoBrowser;
inherited Create(AOwner);
end;
-destructor TLazChromium.Destroy;
+destructor TEmbeddedChromium.Destroy;
begin
inherited Destroy;
Application.RemoveAsyncCalls(Self);
end;
-function TLazChromium.CreateBrowser(const aBrowserParent: TWinControl;
+function TEmbeddedChromium.CreateBrowser(const aBrowserParent: TWinControl;
const aWindowName: ustring; const aContext: ICefRequestContext;
const aExtraInfo: ICefDictionaryValue): boolean;
begin
@@ -311,7 +365,7 @@ begin
DoCreated(0);
end;
-function TLazChromium.CreateBrowser(aParentHandle: TCefWindowHandle;
+function TEmbeddedChromium.CreateBrowser(aParentHandle: TCefWindowHandle;
aParentRect: TRect; const aWindowName: ustring;
const aContext: ICefRequestContext; const aExtraInfo: ICefDictionaryValue): boolean;
begin
@@ -322,7 +376,7 @@ begin
DoCreated(0);
end;
-procedure TLazChromium.CreateBrowser(const aWindowName: ustring);
+procedure TEmbeddedChromium.CreateBrowser(const aWindowName: ustring);
begin
FState := csCreatingBrowser;
inherited CreateBrowser(aWindowName);
@@ -330,7 +384,7 @@ begin
DoCreated(0);
end;
-function TLazChromium.CreateBrowser(const aURL: ustring;
+function TEmbeddedChromium.CreateBrowser(const aURL: ustring;
const aBrowserViewComp: TCEFBrowserViewComponent;
const aContext: ICefRequestContext; const aExtraInfo: ICefDictionaryValue
): boolean;
@@ -341,7 +395,7 @@ begin
DoCreated(0);
end;
-procedure TLazChromium.CloseBrowser(aForceClose: boolean);
+procedure TEmbeddedChromium.CloseBrowser(aForceClose: boolean);
begin
if FState = csCreatingBrowser then begin
FState := csCloseAfterCreate;
@@ -355,7 +409,7 @@ begin
end;
end;
-procedure TLazChromium.LoadURL(const aURL: ustring; const aFrameName: ustring);
+procedure TEmbeddedChromium.LoadURL(const aURL: ustring; const aFrameName: ustring);
begin
FLoadUrl := '';
FFrameName := '';
@@ -420,12 +474,12 @@ begin
Destroy;
end;
-constructor TChromiumWrapper.Create(AOwner: TLazarusBrowserWindow);
+constructor TChromiumWrapper.Create(AOwner: TBrowserWindow);
begin
FBrowserWindow := AOwner;
FWrapperState := wsNone;
- FChromium := TLazChromium.Create(nil);
+ FChromium := TEmbeddedChromium.Create(nil);
if not(csDesigning in AOwner.ComponentState) then
begin
FChromium.OnClose := {$IFDEF FPC}@{$ENDIF}BrowserThread_OnClose;
@@ -498,9 +552,9 @@ begin
FWrapperState := wsNone;
end;
-{ TLazarusBrowserWindow }
+{ TBrowserWindow }
-procedure TLazarusBrowserWindow.DoCreateBrowser(Sender: TObject);
+procedure TBrowserWindow.DoCreateBrowser(Sender: TObject);
begin
if FTimer <> nil then
FTimer.Enabled := False;
@@ -531,7 +585,7 @@ begin
end;
end;
-procedure TLazarusBrowserWindow.DoCreateBrowserAfterContext(Sender: TObject);
+procedure TBrowserWindow.DoCreateBrowserAfterContext(Sender: TObject);
begin
{$IFnDEF WINDOWS}
FTimer := TTimer.Create(Self);
@@ -543,17 +597,17 @@ begin
{$ENDIF}
end;
-function TLazarusBrowserWindow.GetLazChromium: TLazChromium;
+function TBrowserWindow.GetEmbeddedChromium: TEmbeddedChromium;
begin
Result := FChromiumWrapper.Chromium;
end;
-function TLazarusBrowserWindow.GetChromium: TChromium;
+function TBrowserWindow.GetChromium: TChromium;
begin
Result := FChromiumWrapper.FChromium;
end;
-procedure TLazarusBrowserWindow.CreateHandle;
+procedure TBrowserWindow.CreateHandle;
begin
inherited CreateHandle;
if not (csDesigning in ComponentState) then begin
@@ -568,7 +622,7 @@ begin
end;
end;
-procedure TLazarusBrowserWindow.DestroyHandle;
+procedure TBrowserWindow.DestroyHandle;
begin
if FTimer <> nil then
FreeAndNil(FTimer);
@@ -590,7 +644,7 @@ begin
{$ENDIF}
end;
-procedure TLazarusBrowserWindow.RealizeBounds;
+procedure TBrowserWindow.RealizeBounds;
begin
inherited RealizeBounds;
@@ -598,20 +652,20 @@ begin
Chromium.NotifyMoveOrResizeStarted;
end;
-procedure TLazarusBrowserWindow.DoEnter;
+procedure TBrowserWindow.DoEnter;
begin
inherited DoEnter;
If not(csDesigning in ComponentState) then Chromium.SetFocus(True);
end;
-procedure TLazarusBrowserWindow.DoExit;
+procedure TBrowserWindow.DoExit;
begin
inherited DoExit;
if not(csDesigning in ComponentState) then
Chromium.SendCaptureLostEvent;
end;
-procedure TLazarusBrowserWindow.DoOnCreated;
+procedure TBrowserWindow.DoOnCreated;
begin
{$IFDEF FPC}{$IFDEF LINUX}
Chromium.UpdateXWindowVisibility(Visible);
@@ -621,7 +675,7 @@ begin
FOnBrowserCreated(Self);
end;
-procedure TLazarusBrowserWindow.DoOnClosed(Data: PtrInt);
+procedure TBrowserWindow.DoOnClosed(Data: PtrInt);
begin
if (not(csDestroying in ComponentState)) and
Assigned(FOnBrowserClosed)
@@ -629,40 +683,40 @@ begin
FOnBrowserClosed(Self);
end;
-procedure TLazarusBrowserWindow.DoOnFocus(Data: PtrInt);
+procedure TBrowserWindow.DoOnFocus(Data: PtrInt);
begin
SetFocus;
end;
-constructor TLazarusBrowserWindow.Create(AOwner: TComponent);
+constructor TBrowserWindow.Create(AOwner: TComponent);
begin
FChromiumWrapper := TChromiumWrapper.Create(Self);
inherited Create(AOwner);
end;
-destructor TLazarusBrowserWindow.Destroy;
+destructor TBrowserWindow.Destroy;
begin
inherited Destroy;
FChromiumWrapper.MaybeDestroy;
Application.RemoveAsyncCalls(Self);
end;
-procedure TLazarusBrowserWindow.CloseBrowser(aForceClose: boolean);
+procedure TBrowserWindow.CloseBrowser(aForceClose: boolean);
begin
FChromiumWrapper.CloseBrowser(aForceClose);
end;
-procedure TLazarusBrowserWindow.WaitForBrowserClosed;
+procedure TBrowserWindow.WaitForBrowserClosed;
begin
FChromiumWrapper.WaitForBrowserClosed;
end;
-function TLazarusBrowserWindow.IsClosed: boolean;
+function TBrowserWindow.IsClosed: boolean;
begin
Result := FChromiumWrapper.IsClosed;
end;
-procedure TLazarusBrowserWindow.LoadURL(aURL: ustring);
+procedure TBrowserWindow.LoadURL(aURL: ustring);
begin
FChromiumWrapper.LoadURL(aURL);
end;
@@ -671,10 +725,10 @@ end;
procedure Register;
begin
- {$I res/tlazarusbrowserwindow.lrs}
- RegisterComponents('Chromium', [TLazarusBrowserWindow]);
- RegisterPropertyEditor(ClassTypeInfo(TLazChromium), nil,'',TClassPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnClose), TLazChromium, 'OnClose', THiddenPropertyEditor);
+ {$I res/TBrowserWindow.lrs}
+ RegisterComponents('Chromium', [TBrowserWindow]);
+ RegisterPropertyEditor(ClassTypeInfo(TEmbeddedChromium), nil,'',TClassPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnClose), TEmbeddedChromium, 'OnClose', THiddenPropertyEditor);
end;
{$ENDIF}
diff --git a/source/uCEFLazarusOsrBrowserWindow.pas b/source/uCEFOsrBrowserWindow.pas
similarity index 86%
rename from source/uCEFLazarusOsrBrowserWindow.pas
rename to source/uCEFOsrBrowserWindow.pas
index bdcf7b9f..86392eae 100644
--- a/source/uCEFLazarusOsrBrowserWindow.pas
+++ b/source/uCEFOsrBrowserWindow.pas
@@ -44,7 +44,7 @@
*)
-unit uCEFLazarusOsrBrowserWindow;
+unit uCEFOsrBrowserWindow;
{$mode objfpc}{$H+}
{$i cef.inc}
@@ -52,15 +52,17 @@ unit uCEFLazarusOsrBrowserWindow;
interface
uses
+ {$IFDEF DARWIN} // $IFDEF MACOSX
uCEFLazarusCocoa,
+ {$ENDIF}
{$IFDEF FPC}
LResources, PropEdits,
{$ENDIF}
uCEFApplication, uCEFChromiumWindow, uCEFTypes, uCEFInterfaces, uCEFChromium,
uCEFLinkedWinControlBase, uCEFLazApplication, uCEFBufferPanel,
- uCEFLazarusBrowserWindow, uCEFBitmapBitBuffer, uCEFMiscFunctions,
+ uCEFBrowserWindow, uCEFBitmapBitBuffer, uCEFMiscFunctions,
uCEFConstants, uCEFChromiumEvents, Forms, ExtCtrls, LCLType, Graphics,
- Controls, syncobjs, LazLogger, Classes, sysutils, math;
+ Controls, syncobjs, Classes, sysutils, math;
type
@@ -77,13 +79,31 @@ type
//TBrowserKeyPressEvent = procedure(Sender: TObject; var Key: char; var AHandled: Boolean) of Object;
TBrowserUTF8KeyPressEvent = procedure(Sender: TObject; var UTF8Key: TUTF8Char; var AHandled: Boolean) of Object;
+ (* TEmbeddedOsrChromium
- TLazOsrChromium = class(TLazChromium)
+ Hides (THiddenPropertyEditor) any published event that is used by TOsrBrowserWindow
+ * Hidden events must also not be used by user code *
+ *)
+
+ TEmbeddedOsrChromium = class(TEmbeddedChromium)
end;
- { TLazarusOsrBrowserWindow }
+ { TOsrBrowserWindow - Off-Screen-Rendering
- TLazarusOsrBrowserWindow = class(TBufferPanel)
+ A simple "drop on the Form" component for an full embedded browser.
+
+ See notes an TBrowserWindow for requirements in user code.
+ Further:
+ - Some keystrokes may not be sent to KeyDown/KeyPress by the LCL.
+ They may be available as WM_SYSKEYDOWN/UP message on the containing Form.
+
+
+ This component is still experimental.
+ - On MacOS Keyboard support is not complete
+
+ }
+
+ TOsrBrowserWindow = class(TBufferPanel)
private
FPopUpBitmap : TBitmap;
FPopUpRect : TRect;
@@ -136,7 +156,7 @@ type
AHeight: Integer);
private
- FChromium : TLazOsrChromium;
+ FChromium : TEmbeddedOsrChromium;
FOnBrowserClosed : TNotifyEvent;
FOnBrowserCreated : TNotifyEvent;
@@ -151,7 +171,7 @@ type
procedure DoCreateBrowserAfterContext(Sender: TObject);
protected
- function GetChromium: TLazOsrChromium;
+ function GetChromium: TEmbeddedOsrChromium;
function getModifiers(Shift: TShiftState): TCefEventFlags;
function getKeyModifiers(Shift: TShiftState): TCefEventFlags;
function GetButton(Button: TMouseButton): TCefMouseButtonType;
@@ -193,11 +213,16 @@ type
procedure LoadURL(aURL: ustring);
//
published
- property Chromium : TLazOsrChromium read GetChromium;
+ property Chromium : TEmbeddedOsrChromium read GetChromium;
property OnBrowserCreated : TNotifyEvent read FOnBrowserCreated write FOnBrowserCreated;
property OnBrowserClosed : TNotifyEvent read FOnBrowserClosed write FOnBrowserClosed;
+ (* Mouse/Key events
+ The below events can be used to see mouse/key input before it is sent to CEF.
+ All events have a "AHandled" parameter, which can be used to prevent the event
+ from being sent to CEF.
+ *)
property OnMouseDown: TBrowserMouseEvent read FOnMouseDown write FOnMouseDown;
property OnMouseUp: TBrowserMouseEvent read FOnMouseUp write FOnMouseUp;
property OnMouseMove: TBrowserMouseMoveEvent read FOnMouseMove write FOnMouseMove;
@@ -214,14 +239,14 @@ procedure Register;
implementation
-{ TLazarusOsrBrowserWindow }
+{ TOsrBrowserWindow }
-procedure TLazarusOsrBrowserWindow.AsyncInvalidate(Data: PtrInt);
+procedure TOsrBrowserWindow.AsyncInvalidate(Data: PtrInt);
begin
Invalidate;
end;
-procedure TLazarusOsrBrowserWindow.AsyncResize(Data: PtrInt);
+procedure TOsrBrowserWindow.AsyncResize(Data: PtrInt);
begin
try
FResizeCS.Acquire;
@@ -241,12 +266,12 @@ begin
end;
end;
-procedure TLazarusOsrBrowserWindow.SyncIMERangeChanged;
+procedure TOsrBrowserWindow.SyncIMERangeChanged;
begin
ChangeCompositionRange(FSelectedRange, FDeviceBounds);
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumBeforePopup(Sender: TObject;
+procedure TOsrBrowserWindow.DoGetChromiumBeforePopup(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame; const targetUrl,
targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition;
userGesture: Boolean; const popupFeatures: TCefPopupFeatures;
@@ -258,7 +283,7 @@ begin
Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]);
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumPopupShow(Sender: TObject;
+procedure TOsrBrowserWindow.DoGetChromiumPopupShow(Sender: TObject;
const browser: ICefBrowser; AShow: Boolean);
begin
if aShow then
@@ -272,7 +297,7 @@ begin
end;
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumPopupSize(Sender: TObject;
+procedure TOsrBrowserWindow.DoGetChromiumPopupSize(Sender: TObject;
const browser: ICefBrowser; const rect: PCefRect);
begin
LogicalToDevice(rect^, ScreenScale);
@@ -283,7 +308,7 @@ begin
FPopUpRect.Bottom := rect^.y + rect^.height - 1;
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumTooltip(Sender: TObject;
+procedure TOsrBrowserWindow.DoGetChromiumTooltip(Sender: TObject;
const browser: ICefBrowser; var AText: ustring; out Result: Boolean);
begin
hint := aText;
@@ -291,7 +316,7 @@ begin
Result := True;
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumIMECompositionRangeChanged(
+procedure TOsrBrowserWindow.DoGetChromiumIMECompositionRangeChanged(
Sender: TObject; const browser: ICefBrowser; const selected_range: PCefRange;
character_boundsCount: NativeUInt; const character_bounds: PCefRect);
var
@@ -334,7 +359,7 @@ begin
TThread.Synchronize(nil, @SyncIMERangeChanged);
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumCursorChange(Sender: TObject;
+procedure TOsrBrowserWindow.DoGetChromiumCursorChange(Sender: TObject;
const browser: ICefBrowser; cursor_: TCefCursorHandle;
cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo;
var aResult: boolean);
@@ -343,7 +368,7 @@ begin
aResult := True;
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumGetScreenInfo(Sender: TObject;
+procedure TOsrBrowserWindow.DoGetChromiumGetScreenInfo(Sender: TObject;
const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out
Result: Boolean);
var
@@ -366,7 +391,7 @@ begin
Result := True;
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumGetScreenPoint(Sender: TObject;
+procedure TOsrBrowserWindow.DoGetChromiumGetScreenPoint(Sender: TObject;
const browser: ICefBrowser; viewX, viewY: Integer; var screenX,
screenY: Integer; out Result: Boolean);
var
@@ -382,7 +407,7 @@ begin
Result := True;
end;
-procedure TLazarusOsrBrowserWindow.DoGetChromiumViewRect(Sender: TObject;
+procedure TOsrBrowserWindow.DoGetChromiumViewRect(Sender: TObject;
const browser: ICefBrowser; var rect: TCefRect);
var
TempScale : single;
@@ -394,7 +419,7 @@ begin
rect.height := DeviceToLogical(Height, TempScale);
end;
-procedure TLazarusOsrBrowserWindow.DoChromiumPaint(Sender: TObject;
+procedure TOsrBrowserWindow.DoChromiumPaint(Sender: TObject;
const browser: ICefBrowser; kind: TCefPaintElementType;
dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray;
const ABuffer: Pointer; AWidth, AHeight: Integer);
@@ -530,12 +555,12 @@ begin
end;
end;
-function TLazarusOsrBrowserWindow.GetChromium: TLazOsrChromium;
+function TOsrBrowserWindow.GetChromium: TEmbeddedOsrChromium;
begin
Result := FChromium;
end;
-function TLazarusOsrBrowserWindow.getModifiers(Shift: TShiftState
+function TOsrBrowserWindow.getModifiers(Shift: TShiftState
): TCefEventFlags;
begin
Result := EVENTFLAG_NONE;
@@ -549,7 +574,7 @@ begin
if (ssMiddle in Shift) then Result := Result or EVENTFLAG_MIDDLE_MOUSE_BUTTON;
end;
-function TLazarusOsrBrowserWindow.getKeyModifiers(Shift: TShiftState): TCefEventFlags;
+function TOsrBrowserWindow.getKeyModifiers(Shift: TShiftState): TCefEventFlags;
begin
Result := EVENTFLAG_NONE;
@@ -561,7 +586,7 @@ begin
if (ssCaps in Shift) then Result := Result or EVENTFLAG_CAPS_LOCK_ON;
end;
-function TLazarusOsrBrowserWindow.GetButton(Button: TMouseButton
+function TOsrBrowserWindow.GetButton(Button: TMouseButton
): TCefMouseButtonType;
begin
case Button of
@@ -571,12 +596,12 @@ begin
end;
end;
-procedure TLazarusOsrBrowserWindow.DoCreateBrowserAfterContext(Sender: TObject);
+procedure TOsrBrowserWindow.DoCreateBrowserAfterContext(Sender: TObject);
begin
FChromium.CreateBrowser(nil);
end;
-procedure TLazarusOsrBrowserWindow.CreateHandle;
+procedure TOsrBrowserWindow.CreateHandle;
begin
inherited CreateHandle;
if not (csDesigning in ComponentState) then begin
@@ -587,7 +612,7 @@ begin
end;
end;
-procedure TLazarusOsrBrowserWindow.DestroyHandle;
+procedure TOsrBrowserWindow.DestroyHandle;
begin
if (GlobalCEFApp = nil) or
(not FChromium.HasBrowser) or
@@ -601,32 +626,32 @@ begin
inherited DestroyHandle;
end;
-procedure TLazarusOsrBrowserWindow.RealizeBounds;
+procedure TOsrBrowserWindow.RealizeBounds;
begin
inherited RealizeBounds;
Chromium.NotifyMoveOrResizeStarted;
AsyncResize(0);
end;
-procedure TLazarusOsrBrowserWindow.DoEnter;
+procedure TOsrBrowserWindow.DoEnter;
begin
inherited DoEnter;
Chromium.SendFocusEvent(True);
end;
-procedure TLazarusOsrBrowserWindow.DoExit;
+procedure TOsrBrowserWindow.DoExit;
begin
inherited DoExit;
Chromium.SendFocusEvent(False);
end;
-procedure TLazarusOsrBrowserWindow.Click;
+procedure TOsrBrowserWindow.Click;
begin
inherited Click;
SetFocus;
end;
-procedure TLazarusOsrBrowserWindow.MouseDown(Button: TMouseButton;
+procedure TOsrBrowserWindow.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
TempEvent : TCefMouseEvent;
@@ -654,7 +679,7 @@ begin
Chromium.SendMouseClickEvent(@TempEvent, GetButton(Button), False, LastClickCount);
end;
-procedure TLazarusOsrBrowserWindow.MouseUp(Button: TMouseButton;
+procedure TOsrBrowserWindow.MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
TempEvent : TCefMouseEvent;
@@ -680,7 +705,7 @@ begin
Chromium.SendMouseClickEvent(@TempEvent, GetButton(Button), True, LastClickCount);
end;
-procedure TLazarusOsrBrowserWindow.MouseMove(Shift: TShiftState; X, Y: Integer);
+procedure TOsrBrowserWindow.MouseMove(Shift: TShiftState; X, Y: Integer);
var
TempEvent : TCefMouseEvent;
IsHandled: Boolean;
@@ -699,7 +724,7 @@ begin
Chromium.SendMouseMoveEvent(@TempEvent, False);
end;
-procedure TLazarusOsrBrowserWindow.MouseEnter;
+procedure TOsrBrowserWindow.MouseEnter;
var
TempEvent : TCefMouseEvent;
TempPoint : TPoint;
@@ -714,7 +739,7 @@ begin
Chromium.SendMouseMoveEvent(@TempEvent, False);
end;
-procedure TLazarusOsrBrowserWindow.MouseLeave;
+procedure TOsrBrowserWindow.MouseLeave;
var
TempEvent : TCefMouseEvent;
TempPoint : TPoint;
@@ -735,7 +760,7 @@ begin
Chromium.SendMouseMoveEvent(@TempEvent, True);
end;
-function TLazarusOsrBrowserWindow.DoMouseWheel(Shift: TShiftState;
+function TOsrBrowserWindow.DoMouseWheel(Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint): Boolean;
var
TempEvent : TCefMouseEvent;
@@ -760,7 +785,7 @@ begin
Chromium.SendMouseWheelEvent(@TempEvent, 0, WheelDelta);
end;
-procedure TLazarusOsrBrowserWindow.KeyDown(var Key: Word; Shift: TShiftState);
+procedure TOsrBrowserWindow.KeyDown(var Key: Word; Shift: TShiftState);
var
TempKeyEvent : TCefKeyEvent;
IsHandled: Boolean;
@@ -797,7 +822,7 @@ begin
inherited KeyDown(Key, Shift);
end;
-procedure TLazarusOsrBrowserWindow.UTF8KeyPress(var UTF8Key: TUTF8Char);
+procedure TOsrBrowserWindow.UTF8KeyPress(var UTF8Key: TUTF8Char);
var
TempKeyEvent : TCefKeyEvent;
TempString : UnicodeString;
@@ -838,7 +863,7 @@ begin
inherited UTF8KeyPress(UTF8Key);
end;
-procedure TLazarusOsrBrowserWindow.KeyUp(var Key: Word; Shift: TShiftState);
+procedure TOsrBrowserWindow.KeyUp(var Key: Word; Shift: TShiftState);
var
TempKeyEvent : TCefKeyEvent;
IsHandled: Boolean;
@@ -869,20 +894,20 @@ begin
end;
{$IFDEF MSWINDOWS}
-procedure TLazarusOsrBrowserWindow.DoOnIMECancelComposition;
+procedure TOsrBrowserWindow.DoOnIMECancelComposition;
begin
inherited DoOnIMECancelComposition;
Chromium.IMECancelComposition;
end;
-procedure TLazarusOsrBrowserWindow.DoOnIMECommitText(const aText: ustring;
+procedure TOsrBrowserWindow.DoOnIMECommitText(const aText: ustring;
const replacement_range: PCefRange; relative_cursor_pos: integer);
begin
inherited DoOnIMECommitText(aText, replacement_range, relative_cursor_pos);
Chromium.IMECommitText(aText, replacement_range, relative_cursor_pos);;
end;
-procedure TLazarusOsrBrowserWindow.DoOnIMESetComposition(const aText: ustring;
+procedure TOsrBrowserWindow.DoOnIMESetComposition(const aText: ustring;
const underlines: TCefCompositionUnderlineDynArray; const replacement_range,
selection_range: TCefRange);
begin
@@ -891,20 +916,20 @@ begin
end;
{$ENDIF}
-procedure TLazarusOsrBrowserWindow.CaptureChanged;
+procedure TOsrBrowserWindow.CaptureChanged;
begin
inherited CaptureChanged;
if (Chromium <> nil) then Chromium.SendCaptureLostEvent;
end;
-procedure TLazarusOsrBrowserWindow.DoOnCreated(Sender: TObject);
+procedure TOsrBrowserWindow.DoOnCreated(Sender: TObject);
begin
if Assigned(FOnBrowserCreated) then
FOnBrowserCreated(Self);
end;
-procedure TLazarusOsrBrowserWindow.DoOnClosed(Sender: TObject);
+procedure TOsrBrowserWindow.DoOnClosed(Sender: TObject);
begin
if (not(csDestroying in ComponentState)) and
Assigned(FOnBrowserClosed)
@@ -912,7 +937,7 @@ begin
FOnBrowserClosed(Self);
end;
-constructor TLazarusOsrBrowserWindow.Create(AOwner: TComponent);
+constructor TOsrBrowserWindow.Create(AOwner: TComponent);
begin
FResizeCS := TCriticalSection.Create;
@@ -920,7 +945,7 @@ begin
FSelectedRange.from := 0;
FSelectedRange.to_ := 0;
- FChromium := TLazOsrChromium.Create(Self);
+ FChromium := TEmbeddedOsrChromium.Create(Self);
FChromium.InternalOnBrowserClosed := {$IFDEF FPC}@{$ENDIF}DoOnClosed;
FChromium.InternalOnBrowserCreated := {$IFDEF FPC}@{$ENDIF}DoOnCreated;
@@ -939,7 +964,7 @@ begin
CopyOriginalBuffer := true;
end;
-destructor TLazarusOsrBrowserWindow.Destroy;
+destructor TOsrBrowserWindow.Destroy;
begin
inherited Destroy;
FreeAndNil(FResizeCS);
@@ -950,12 +975,12 @@ begin
end;
end;
-procedure TLazarusOsrBrowserWindow.CloseBrowser(aForceClose: boolean);
+procedure TOsrBrowserWindow.CloseBrowser(aForceClose: boolean);
begin
FChromium.CloseBrowser(aForceClose);
end;
-procedure TLazarusOsrBrowserWindow.WaitForBrowserClosed;
+procedure TOsrBrowserWindow.WaitForBrowserClosed;
begin
if not FChromium.HasBrowser then
exit;
@@ -971,12 +996,12 @@ begin
// TODO : sent closed?
end;
-function TLazarusOsrBrowserWindow.IsClosed: boolean;
+function TOsrBrowserWindow.IsClosed: boolean;
begin
Result := not FChromium.HasBrowser;
end;
-procedure TLazarusOsrBrowserWindow.LoadURL(aURL: ustring);
+procedure TOsrBrowserWindow.LoadURL(aURL: ustring);
begin
FChromium.LoadURL(aURL);
end;
@@ -985,19 +1010,19 @@ end;
{$IFDEF FPC}
procedure Register;
begin
-// {$I res/tlazarusosrbrowserwindow.lrs}
- RegisterComponents('Chromium', [TLazarusOsrBrowserWindow]);
- RegisterPropertyEditor(TypeInfo(TOnClose), TLazOsrChromium,'OnClose',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnPaint), TLazOsrChromium,'OnPaint',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnGetViewRect), TLazOsrChromium,'OnGetViewRect',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnCursorChange), TLazOsrChromium,'OnCursorChange',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnGetScreenPoint), TLazOsrChromium,'OnGetScreenPoint',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnGetScreenInfo), TLazOsrChromium,'OnGetScreenInfo',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnPopupShow), TLazOsrChromium,'OnPopupShow',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnPopupSize), TLazOsrChromium,'OnPopupSize',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnTooltip), TLazOsrChromium,'OnTooltip',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnBeforePopup), TLazOsrChromium,'OnBeforePopup',THiddenPropertyEditor);
- RegisterPropertyEditor(TypeInfo(TOnIMECompositionRangeChanged), TLazOsrChromium,'OnIMECompositionRangeChanged',THiddenPropertyEditor);
+ {$I res/TOsrBrowserWindow.lrs}
+ RegisterComponents('Chromium', [TOsrBrowserWindow]);
+ RegisterPropertyEditor(TypeInfo(TOnClose), TEmbeddedOsrChromium,'OnClose',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnPaint), TEmbeddedOsrChromium,'OnPaint',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnGetViewRect), TEmbeddedOsrChromium,'OnGetViewRect',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnCursorChange), TEmbeddedOsrChromium,'OnCursorChange',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnGetScreenPoint), TEmbeddedOsrChromium,'OnGetScreenPoint',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnGetScreenInfo), TEmbeddedOsrChromium,'OnGetScreenInfo',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnPopupShow), TEmbeddedOsrChromium,'OnPopupShow',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnPopupSize), TEmbeddedOsrChromium,'OnPopupSize',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnTooltip), TEmbeddedOsrChromium,'OnTooltip',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnBeforePopup), TEmbeddedOsrChromium,'OnBeforePopup',THiddenPropertyEditor);
+ RegisterPropertyEditor(TypeInfo(TOnIMECompositionRangeChanged), TEmbeddedOsrChromium,'OnIMECompositionRangeChanged',THiddenPropertyEditor);
end;
{$ENDIF}