mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-04-17 06:57:13 +02:00
Expose additional event properties
This commit is contained in:
parent
05d3f02c8e
commit
c45c130b33
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<CONFIG>
|
<CONFIG>
|
||||||
<Package Version="4">
|
<Package Version="5">
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<Name Value="CEF4Delphi_Lazarus"/>
|
<Name Value="CEF4Delphi_Lazarus"/>
|
||||||
<Type Value="RunAndDesignTime"/>
|
<Type Value="RunAndDesignTime"/>
|
||||||
@ -850,19 +850,23 @@
|
|||||||
<UnitName Value="uCEFLazarusOsrBrowserWindow"/>
|
<UnitName Value="uCEFLazarusOsrBrowserWindow"/>
|
||||||
</Item202>
|
</Item202>
|
||||||
</Files>
|
</Files>
|
||||||
<RequiredPkgs Count="4">
|
<CompatibilityMode Value="True"/>
|
||||||
|
<RequiredPkgs Count="5">
|
||||||
<Item1>
|
<Item1>
|
||||||
<PackageName Value="dcpcrypt"/>
|
<PackageName Value="IDEIntf"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
<Item2>
|
<Item2>
|
||||||
<PackageName Value="LCL"/>
|
<PackageName Value="dcpcrypt"/>
|
||||||
</Item2>
|
</Item2>
|
||||||
<Item3>
|
<Item3>
|
||||||
<PackageName Value="LCLBase"/>
|
<PackageName Value="LCL"/>
|
||||||
</Item3>
|
</Item3>
|
||||||
<Item4>
|
<Item4>
|
||||||
<PackageName Value="FCL"/>
|
<PackageName Value="LCLBase"/>
|
||||||
</Item4>
|
</Item4>
|
||||||
|
<Item5>
|
||||||
|
<PackageName Value="FCL"/>
|
||||||
|
</Item5>
|
||||||
</RequiredPkgs>
|
</RequiredPkgs>
|
||||||
<UsageOptions>
|
<UsageOptions>
|
||||||
<UnitPath Value="$(PkgOutDir)"/>
|
<UnitPath Value="$(PkgOutDir)"/>
|
||||||
|
@ -44,21 +44,33 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
{$IFDEF FPC}
|
{$IFDEF FPC}
|
||||||
LResources,
|
LResources, PropEdits,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
uCEFApplication, uCEFChromiumWindow, uCEFTypes, uCEFInterfaces, uCEFChromium,
|
uCEFApplication, uCEFChromiumWindow, uCEFTypes, uCEFInterfaces, uCEFChromium,
|
||||||
uCEFLinkedWinControlBase, uCEFLazApplication, uCEFBufferPanel,
|
uCEFLinkedWinControlBase, uCEFLazApplication, uCEFBufferPanel,
|
||||||
uCEFLazarusBrowserWindow, uCEFBitmapBitBuffer, uCEFMiscFunctions,
|
uCEFLazarusBrowserWindow, uCEFBitmapBitBuffer, uCEFMiscFunctions,
|
||||||
uCEFConstants, Forms, ExtCtrls, LCLType, Graphics, Controls, syncobjs,
|
uCEFConstants, uCEFChromiumEvents, Forms, ExtCtrls, LCLType, Graphics,
|
||||||
LazLogger, Classes, sysutils, math;
|
Controls, syncobjs, LazLogger, Classes, sysutils, math;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
TBrowserMouseEvent = procedure(Sender: TObject; Button: TMouseButton;
|
TBrowserMouseEvent = procedure(Sender: TObject; Button: TMouseButton;
|
||||||
Shift: TShiftState; X, Y: Integer;
|
Shift: TShiftState; X, Y: Integer;
|
||||||
var AHandled: Boolean) of Object;
|
var AHandled: Boolean) of Object;
|
||||||
|
TBrowserMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState;
|
||||||
|
X, Y: Integer;
|
||||||
|
var AHandled: Boolean) of Object;
|
||||||
|
TBrowserMouseWheelEvent = procedure(Sender: TObject; Shift: TShiftState;
|
||||||
|
WheelDelta: Integer; MousePos: TPoint;
|
||||||
|
var AHandled: Boolean) of Object;
|
||||||
|
TBrowserKeyEvent = procedure(Sender: TObject; var Key: Word; Shift: TShiftState; var AHandled: Boolean) of Object;
|
||||||
|
//TBrowserKeyPressEvent = procedure(Sender: TObject; var Key: char; var AHandled: Boolean) of Object;
|
||||||
|
TBrowserUTF8KeyPressEvent = procedure(Sender: TObject; var UTF8Key: TUTF8Char; var AHandled: Boolean) of Object;
|
||||||
|
|
||||||
|
|
||||||
|
TLazOsrChromium = class(TLazChromium)
|
||||||
|
end;
|
||||||
|
|
||||||
{ TLazarusOsrBrowserWindow }
|
{ TLazarusOsrBrowserWindow }
|
||||||
|
|
||||||
TLazarusOsrBrowserWindow = class(TBufferPanel)
|
TLazarusOsrBrowserWindow = class(TBufferPanel)
|
||||||
@ -114,17 +126,22 @@ type
|
|||||||
AHeight: Integer);
|
AHeight: Integer);
|
||||||
|
|
||||||
private
|
private
|
||||||
FChromium : TLazChromium;
|
FChromium : TLazOsrChromium;
|
||||||
|
|
||||||
FOnBrowserClosed : TNotifyEvent;
|
FOnBrowserClosed : TNotifyEvent;
|
||||||
FOnBrowserCreated : TNotifyEvent;
|
FOnBrowserCreated : TNotifyEvent;
|
||||||
|
FOnKeyDown: TBrowserKeyEvent;
|
||||||
|
FOnKeyUp: TBrowserKeyEvent;
|
||||||
FOnMouseDown: TBrowserMouseEvent;
|
FOnMouseDown: TBrowserMouseEvent;
|
||||||
|
FOnMouseMove: TBrowserMouseMoveEvent;
|
||||||
FOnMouseUp: TBrowserMouseEvent;
|
FOnMouseUp: TBrowserMouseEvent;
|
||||||
|
FOnMouseWheel: TBrowserMouseWheelEvent;
|
||||||
|
FOnUtf8KeyPress: TBrowserUTF8KeyPressEvent;
|
||||||
|
|
||||||
procedure DoCreateBrowserAfterContext(Sender: TObject);
|
procedure DoCreateBrowserAfterContext(Sender: TObject);
|
||||||
|
|
||||||
protected
|
protected
|
||||||
function GetChromium: TLazChromium;
|
function GetChromium: TLazOsrChromium;
|
||||||
function getModifiers(Shift: TShiftState): TCefEventFlags;
|
function getModifiers(Shift: TShiftState): TCefEventFlags;
|
||||||
function getKeyModifiers(Shift: TShiftState): TCefEventFlags;
|
function getKeyModifiers(Shift: TShiftState): TCefEventFlags;
|
||||||
function GetButton(Button: TMouseButton): TCefMouseButtonType;
|
function GetButton(Button: TMouseButton): TCefMouseButtonType;
|
||||||
@ -166,13 +183,18 @@ type
|
|||||||
procedure LoadURL(aURL: ustring);
|
procedure LoadURL(aURL: ustring);
|
||||||
//
|
//
|
||||||
published
|
published
|
||||||
property Chromium : TLazChromium read GetChromium;
|
property Chromium : TLazOsrChromium read GetChromium;
|
||||||
|
|
||||||
property OnBrowserCreated : TNotifyEvent read FOnBrowserCreated write FOnBrowserCreated;
|
property OnBrowserCreated : TNotifyEvent read FOnBrowserCreated write FOnBrowserCreated;
|
||||||
property OnBrowserClosed : TNotifyEvent read FOnBrowserClosed write FOnBrowserClosed;
|
property OnBrowserClosed : TNotifyEvent read FOnBrowserClosed write FOnBrowserClosed;
|
||||||
|
|
||||||
property OnMouseDown: TBrowserMouseEvent read FOnMouseDown write FOnMouseDown;
|
property OnMouseDown: TBrowserMouseEvent read FOnMouseDown write FOnMouseDown;
|
||||||
property OnMouseUp: TBrowserMouseEvent read FOnMouseUp write FOnMouseUp;
|
property OnMouseUp: TBrowserMouseEvent read FOnMouseUp write FOnMouseUp;
|
||||||
|
property OnMouseMove: TBrowserMouseMoveEvent read FOnMouseMove write FOnMouseMove;
|
||||||
|
property OnMouseWheel: TBrowserMouseWheelEvent read FOnMouseWheel write FOnMouseWheel;
|
||||||
|
property OnKeyDown: TBrowserKeyEvent read FOnKeyDown write FOnKeyDown;
|
||||||
|
property OnKeyUp: TBrowserKeyEvent read FOnKeyUp write FOnKeyUp;
|
||||||
|
property OnUtf8KeyPress: TBrowserUTF8KeyPressEvent read FOnUtf8KeyPress write FOnUtf8KeyPress;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF FPC}
|
{$IFDEF FPC}
|
||||||
@ -498,7 +520,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazarusOsrBrowserWindow.GetChromium: TLazChromium;
|
function TLazarusOsrBrowserWindow.GetChromium: TLazOsrChromium;
|
||||||
begin
|
begin
|
||||||
Result := FChromium;
|
Result := FChromium;
|
||||||
end;
|
end;
|
||||||
@ -649,8 +671,14 @@ end;
|
|||||||
procedure TLazarusOsrBrowserWindow.MouseMove(Shift: TShiftState; X, Y: Integer);
|
procedure TLazarusOsrBrowserWindow.MouseMove(Shift: TShiftState; X, Y: Integer);
|
||||||
var
|
var
|
||||||
TempEvent : TCefMouseEvent;
|
TempEvent : TCefMouseEvent;
|
||||||
|
IsHandled: Boolean;
|
||||||
begin
|
begin
|
||||||
inherited MouseMove(Shift, X, Y);
|
inherited MouseMove(Shift, X, Y);
|
||||||
|
IsHandled := False;
|
||||||
|
if FOnMouseMove <> nil then
|
||||||
|
FOnMouseMove(Self, Shift, X, Y, IsHandled);
|
||||||
|
if IsHandled then
|
||||||
|
exit;
|
||||||
|
|
||||||
TempEvent.x := x;
|
TempEvent.x := x;
|
||||||
TempEvent.y := y;
|
TempEvent.y := y;
|
||||||
@ -699,8 +727,14 @@ function TLazarusOsrBrowserWindow.DoMouseWheel(Shift: TShiftState;
|
|||||||
WheelDelta: Integer; MousePos: TPoint): Boolean;
|
WheelDelta: Integer; MousePos: TPoint): Boolean;
|
||||||
var
|
var
|
||||||
TempEvent : TCefMouseEvent;
|
TempEvent : TCefMouseEvent;
|
||||||
|
IsHandled: Boolean;
|
||||||
begin
|
begin
|
||||||
Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos);
|
Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos);
|
||||||
|
IsHandled := False;
|
||||||
|
if FOnMouseWheel <> nil then
|
||||||
|
FOnMouseWheel(Self, Shift, WheelDelta, MousePos, IsHandled);
|
||||||
|
if IsHandled then
|
||||||
|
exit;
|
||||||
|
|
||||||
TempEvent.x := MousePos.x;
|
TempEvent.x := MousePos.x;
|
||||||
TempEvent.y := MousePos.y;
|
TempEvent.y := MousePos.y;
|
||||||
@ -717,7 +751,16 @@ end;
|
|||||||
procedure TLazarusOsrBrowserWindow.KeyDown(var Key: Word; Shift: TShiftState);
|
procedure TLazarusOsrBrowserWindow.KeyDown(var Key: Word; Shift: TShiftState);
|
||||||
var
|
var
|
||||||
TempKeyEvent : TCefKeyEvent;
|
TempKeyEvent : TCefKeyEvent;
|
||||||
|
IsHandled: Boolean;
|
||||||
begin
|
begin
|
||||||
|
IsHandled := False;
|
||||||
|
if FOnKeyDown <> nil then
|
||||||
|
FOnKeyDown(Self, Key, Shift, IsHandled);
|
||||||
|
if IsHandled then begin
|
||||||
|
inherited KeyDown(Key, Shift);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
FLastKeyDown := Key;
|
FLastKeyDown := Key;
|
||||||
if (Key <> 0) and (Chromium <> nil) then
|
if (Key <> 0) and (Chromium <> nil) then
|
||||||
begin
|
begin
|
||||||
@ -742,7 +785,16 @@ procedure TLazarusOsrBrowserWindow.UTF8KeyPress(var UTF8Key: TUTF8Char);
|
|||||||
var
|
var
|
||||||
TempKeyEvent : TCefKeyEvent;
|
TempKeyEvent : TCefKeyEvent;
|
||||||
TempString : UnicodeString;
|
TempString : UnicodeString;
|
||||||
|
IsHandled: Boolean;
|
||||||
begin
|
begin
|
||||||
|
IsHandled := False;
|
||||||
|
if FOnUtf8KeyPress <> nil then
|
||||||
|
FOnUtf8KeyPress(Self, UTF8Key, IsHandled);
|
||||||
|
if IsHandled then begin
|
||||||
|
inherited UTF8KeyPress(UTF8Key);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
if Focused then
|
if Focused then
|
||||||
begin
|
begin
|
||||||
TempString := UTF8Decode(UTF8Key);
|
TempString := UTF8Decode(UTF8Key);
|
||||||
@ -773,7 +825,16 @@ end;
|
|||||||
procedure TLazarusOsrBrowserWindow.KeyUp(var Key: Word; Shift: TShiftState);
|
procedure TLazarusOsrBrowserWindow.KeyUp(var Key: Word; Shift: TShiftState);
|
||||||
var
|
var
|
||||||
TempKeyEvent : TCefKeyEvent;
|
TempKeyEvent : TCefKeyEvent;
|
||||||
|
IsHandled: Boolean;
|
||||||
begin
|
begin
|
||||||
|
IsHandled := False;
|
||||||
|
if FOnKeyUp <> nil then
|
||||||
|
FOnKeyUp(Self, Key, Shift, IsHandled);
|
||||||
|
if IsHandled then begin
|
||||||
|
inherited KeyUp(Key, Shift);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
if (Key <> 0) and (Chromium <> nil) then
|
if (Key <> 0) and (Chromium <> nil) then
|
||||||
begin
|
begin
|
||||||
TempKeyEvent.kind := KEYEVENT_KEYUP;
|
TempKeyEvent.kind := KEYEVENT_KEYUP;
|
||||||
@ -843,9 +904,9 @@ begin
|
|||||||
FSelectedRange.from := 0;
|
FSelectedRange.from := 0;
|
||||||
FSelectedRange.to_ := 0;
|
FSelectedRange.to_ := 0;
|
||||||
|
|
||||||
FChromium := TLazChromium.Create(Self);
|
FChromium := TLazOsrChromium.Create(Self);
|
||||||
FChromium.OnBrowserClosed := {$IFDEF FPC}@{$ENDIF}DoOnClosed;
|
FChromium.InternalOnBrowserClosed := {$IFDEF FPC}@{$ENDIF}DoOnClosed;
|
||||||
FChromium.OnBrowserCreated := {$IFDEF FPC}@{$ENDIF}DoOnCreated;
|
FChromium.InternalOnBrowserCreated := {$IFDEF FPC}@{$ENDIF}DoOnCreated;
|
||||||
|
|
||||||
FChromium.OnPaint := {$IFDEF FPC}@{$ENDIF}DoChromiumPaint;
|
FChromium.OnPaint := {$IFDEF FPC}@{$ENDIF}DoChromiumPaint;
|
||||||
FChromium.OnGetViewRect := {$IFDEF FPC}@{$ENDIF}DoGetChromiumViewRect;
|
FChromium.OnGetViewRect := {$IFDEF FPC}@{$ENDIF}DoGetChromiumViewRect;
|
||||||
@ -910,6 +971,17 @@ procedure Register;
|
|||||||
begin
|
begin
|
||||||
// {$I res/tlazarusosrbrowserwindow.lrs}
|
// {$I res/tlazarusosrbrowserwindow.lrs}
|
||||||
RegisterComponents('Chromium', [TLazarusOsrBrowserWindow]);
|
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);
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
|
@ -44,11 +44,11 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
{$IFDEF FPC}
|
{$IFDEF FPC}
|
||||||
LResources,
|
LResources, PropEdits,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
uCEFApplication, uCEFChromiumWindow, uCEFTypes, uCEFInterfaces, uCEFChromium,
|
uCEFApplication, uCEFChromiumWindow, uCEFTypes, uCEFInterfaces, uCEFChromium,
|
||||||
uCEFLinkedWinControlBase, uCEFLazApplication, uCEFBrowserViewComponent, Forms,
|
uCEFLinkedWinControlBase, uCEFLazApplication, uCEFBrowserViewComponent,
|
||||||
ExtCtrls, Controls, Classes, sysutils;
|
uCEFChromiumEvents, Forms, ExtCtrls, Controls, Classes, sysutils;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -63,18 +63,22 @@ type
|
|||||||
private type
|
private type
|
||||||
TLazChromiumState = (csNoBrowser, csCreatingBrowser, csHasBrowser, csClosingBrowser, csCloseAfterCreate);
|
TLazChromiumState = (csNoBrowser, csCreatingBrowser, csHasBrowser, csClosingBrowser, csCloseAfterCreate);
|
||||||
private
|
private
|
||||||
|
FInternalOnGotFocus: TOnGotFocus;
|
||||||
FState : TLazChromiumState;
|
FState : TLazChromiumState;
|
||||||
FOnBrowserClosed : TNotifyEvent;
|
FInternalOnBrowserClosed : TNotifyEvent;
|
||||||
FOnBrowserCreated : TNotifyEvent;
|
FInternalOnBrowserCreated : TNotifyEvent;
|
||||||
|
|
||||||
FLoadUrl, FFrameName : ustring;
|
FLoadUrl, FFrameName : ustring;
|
||||||
function GetIsClosing: Boolean;
|
function GetIsClosing: Boolean;
|
||||||
|
procedure SetInternalOnClose(AValue: TOnClose);
|
||||||
|
|
||||||
protected
|
protected
|
||||||
function GetHasBrowser : boolean; reintroduce;
|
function GetHasBrowser : boolean; reintroduce;
|
||||||
|
|
||||||
procedure doOnBeforeClose(const ABrowser: ICefBrowser); override;
|
procedure doOnBeforeClose(const ABrowser: ICefBrowser); override;
|
||||||
procedure doOnAfterCreated(const ABrowser: ICefBrowser); override;
|
procedure doOnAfterCreated(const ABrowser: ICefBrowser); override;
|
||||||
|
procedure doOnGotFocus(const Abrowser: ICefBrowser); override;
|
||||||
|
function MustCreateFocusHandler: boolean; override;
|
||||||
|
|
||||||
procedure DoCreated(Data: PtrInt);
|
procedure DoCreated(Data: PtrInt);
|
||||||
procedure DoOnClosed(Data: PtrInt);
|
procedure DoOnClosed(Data: PtrInt);
|
||||||
@ -108,8 +112,9 @@ type
|
|||||||
- OnBrowserCreated: the parent event may be called when procedure Initialized is still false.
|
- 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
|
- OnBrowserCreated: may not be called, if the CloseBrowser has already been called
|
||||||
*)
|
*)
|
||||||
property OnBrowserCreated : TNotifyEvent read FOnBrowserCreated write FOnBrowserCreated;
|
property InternalOnBrowserCreated : TNotifyEvent read FInternalOnBrowserCreated write FInternalOnBrowserCreated;
|
||||||
property OnBrowserClosed : TNotifyEvent read FOnBrowserClosed write FOnBrowserClosed;
|
property InternalOnBrowserClosed : TNotifyEvent read FInternalOnBrowserClosed write FInternalOnBrowserClosed;
|
||||||
|
property InternalOnGotFocus : TOnGotFocus read FInternalOnGotFocus write FInternalOnGotFocus;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TLazarusBrowserWindow = class;
|
TLazarusBrowserWindow = class;
|
||||||
@ -148,6 +153,7 @@ type
|
|||||||
*)
|
*)
|
||||||
procedure WaitForBrowserClosed;
|
procedure WaitForBrowserClosed;
|
||||||
|
|
||||||
|
published
|
||||||
property Chromium: TLazChromium read FChromium;
|
property Chromium: TLazChromium read FChromium;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -167,6 +173,7 @@ type
|
|||||||
|
|
||||||
procedure DoCreateBrowser(Sender: TObject);
|
procedure DoCreateBrowser(Sender: TObject);
|
||||||
procedure DoCreateBrowserAfterContext(Sender: TObject);
|
procedure DoCreateBrowserAfterContext(Sender: TObject);
|
||||||
|
function GetLazChromium: TLazChromium;
|
||||||
protected
|
protected
|
||||||
function GetChromium: TChromium; override;
|
function GetChromium: TChromium; override;
|
||||||
procedure DestroyHandle; override;
|
procedure DestroyHandle; override;
|
||||||
@ -188,7 +195,7 @@ type
|
|||||||
procedure LoadURL(aURL: ustring);
|
procedure LoadURL(aURL: ustring);
|
||||||
|
|
||||||
published
|
published
|
||||||
property Chromium; // : TChromium read GetChromium;
|
property Chromium: TLazChromium read GetLazChromium;
|
||||||
|
|
||||||
property OnBrowserCreated : TNotifyEvent read FOnBrowserCreated write FOnBrowserCreated;
|
property OnBrowserCreated : TNotifyEvent read FOnBrowserCreated write FOnBrowserCreated;
|
||||||
(* OnBrowserClosed will not be called, if the TLazarusBrowserWindow is
|
(* OnBrowserClosed will not be called, if the TLazarusBrowserWindow is
|
||||||
@ -210,6 +217,11 @@ begin
|
|||||||
Result := FState in [csCloseAfterCreate, csClosingBrowser];
|
Result := FState in [csCloseAfterCreate, csClosingBrowser];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TLazChromium.SetInternalOnClose(AValue: TOnClose);
|
||||||
|
begin
|
||||||
|
inherited OnClose := AValue;
|
||||||
|
end;
|
||||||
|
|
||||||
function TLazChromium.GetHasBrowser: boolean;
|
function TLazChromium.GetHasBrowser: boolean;
|
||||||
begin
|
begin
|
||||||
Result := (FState <> csNoBrowser) or (inherited GetHasBrowser);
|
Result := (FState <> csNoBrowser) or (inherited GetHasBrowser);
|
||||||
@ -233,6 +245,19 @@ begin
|
|||||||
Application.QueueAsyncCall(@DoCreated, 0);
|
Application.QueueAsyncCall(@DoCreated, 0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TLazChromium.doOnGotFocus(const Abrowser: ICefBrowser);
|
||||||
|
begin
|
||||||
|
inherited doOnGotFocus(Abrowser);
|
||||||
|
if Assigned(FInternalOnGotFocus) then
|
||||||
|
FInternalOnGotFocus(Self, Abrowser);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLazChromium.MustCreateFocusHandler: boolean;
|
||||||
|
begin
|
||||||
|
Result := assigned(FInternalOnGotFocus) or
|
||||||
|
inherited MustCreateFocusHandler;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TLazChromium.DoCreated(Data: PtrInt);
|
procedure TLazChromium.DoCreated(Data: PtrInt);
|
||||||
var
|
var
|
||||||
u, f: ustring;
|
u, f: ustring;
|
||||||
@ -247,8 +272,8 @@ begin
|
|||||||
LoadURL(u, f);
|
LoadURL(u, f);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if (FOnBrowserCreated <> nil) then
|
if (FInternalOnBrowserCreated <> nil) then
|
||||||
FOnBrowserCreated(Self);
|
FInternalOnBrowserCreated(Self);
|
||||||
end;
|
end;
|
||||||
csCloseAfterCreate: begin
|
csCloseAfterCreate: begin
|
||||||
FState := csHasBrowser;
|
FState := csHasBrowser;
|
||||||
@ -259,8 +284,8 @@ end;
|
|||||||
|
|
||||||
procedure TLazChromium.DoOnClosed(Data: PtrInt);
|
procedure TLazChromium.DoOnClosed(Data: PtrInt);
|
||||||
begin
|
begin
|
||||||
if (FOnBrowserClosed <> nil) then
|
if (FInternalOnBrowserClosed <> nil) then
|
||||||
FOnBrowserClosed(Self);
|
FInternalOnBrowserClosed(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TLazChromium.Create(AOwner: TComponent);
|
constructor TLazChromium.Create(AOwner: TComponent);
|
||||||
@ -400,15 +425,15 @@ begin
|
|||||||
FBrowserWindow := AOwner;
|
FBrowserWindow := AOwner;
|
||||||
FWrapperState := wsNone;
|
FWrapperState := wsNone;
|
||||||
|
|
||||||
|
FChromium := TLazChromium.Create(nil);
|
||||||
if not(csDesigning in AOwner.ComponentState) then
|
if not(csDesigning in AOwner.ComponentState) then
|
||||||
begin
|
begin
|
||||||
FChromium := TLazChromium.Create(nil);
|
|
||||||
FChromium.OnClose := {$IFDEF FPC}@{$ENDIF}BrowserThread_OnClose;
|
FChromium.OnClose := {$IFDEF FPC}@{$ENDIF}BrowserThread_OnClose;
|
||||||
FChromium.OnBrowserClosed := {$IFDEF FPC}@{$ENDIF}DoOnBeforeClose;
|
FChromium.InternalOnBrowserClosed := {$IFDEF FPC}@{$ENDIF}DoOnBeforeClose;
|
||||||
FChromium.OnBrowserCreated := {$IFDEF FPC}@{$ENDIF}DoOnAfterCreated;
|
FChromium.InternalOnBrowserCreated := {$IFDEF FPC}@{$ENDIF}DoOnAfterCreated;
|
||||||
{$IFDEF LINUX}
|
{$IFDEF LINUX}
|
||||||
// This is a workaround for the CEF issue #2026. Read below for more info.
|
// This is a workaround for the CEF issue #2026. Read below for more info.
|
||||||
FChromium.OnGotFocus := {$IFDEF FPC}@{$ENDIF}BrowserThread_OnGotFocus;
|
FChromium.InternalOnGotFocus := {$IFDEF FPC}@{$ENDIF}BrowserThread_OnGotFocus;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -518,6 +543,11 @@ begin
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TLazarusBrowserWindow.GetLazChromium: TLazChromium;
|
||||||
|
begin
|
||||||
|
Result := FChromiumWrapper.Chromium;
|
||||||
|
end;
|
||||||
|
|
||||||
function TLazarusBrowserWindow.GetChromium: TChromium;
|
function TLazarusBrowserWindow.GetChromium: TChromium;
|
||||||
begin
|
begin
|
||||||
Result := FChromiumWrapper.FChromium;
|
Result := FChromiumWrapper.FChromium;
|
||||||
@ -643,6 +673,8 @@ procedure Register;
|
|||||||
begin
|
begin
|
||||||
{$I res/tlazarusbrowserwindow.lrs}
|
{$I res/tlazarusbrowserwindow.lrs}
|
||||||
RegisterComponents('Chromium', [TLazarusBrowserWindow]);
|
RegisterComponents('Chromium', [TLazarusBrowserWindow]);
|
||||||
|
RegisterPropertyEditor(ClassTypeInfo(TLazChromium), nil,'',TClassPropertyEditor);
|
||||||
|
RegisterPropertyEditor(TypeInfo(TOnClose), TLazChromium, 'OnClose', THiddenPropertyEditor);
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user