Skip to content

Commit

Permalink
fix #45
Browse files Browse the repository at this point in the history
extend LCLSimple and LCLCefClient
  • Loading branch information
dliw committed Mar 20, 2017
1 parent c32040c commit 00621e9
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 11 deletions.
10 changes: 5 additions & 5 deletions Component/cef3lcl.pas
Expand Up @@ -233,7 +233,7 @@ TCustomChromium = class(TWinControl, IChromiumEvents)
procedure doOnFindResult(const browser: ICefBrowser; identifier, count: Integer; const selectionRect: TCefRect; activeMatchOridinal: Integer; finalUpdate: Boolean); virtual;

{ FocusHandler }
procedure doOnTakeFocus(const Browser: ICefBrowser; next: Boolean); virtual;
procedure doOnTakeFocus(const Browser: ICefBrowser; next_: Boolean); virtual;
function doOnSetFocus(const Browser: ICefBrowser; Source: TCefFocusSource): Boolean; virtual;
procedure doOnGotFocus(const Browser: ICefBrowser); virtual;

Expand Down Expand Up @@ -438,10 +438,10 @@ TChromium = class(TCustomChromium)
published
property Color;
property Constraints;
//property TabStop;
property TabStop;
property Align;
property Anchors;
//property TabOrder;
property TabOrder;
property Visible;

property OnProcessMessageReceived;
Expand Down Expand Up @@ -1044,9 +1044,9 @@ procedure TCustomChromium.doOnFindResult(const browser: ICefBrowser; identifier,
activeMatchOridinal, finalUpdate);
end;

procedure TCustomChromium.doOnTakeFocus(const Browser: ICefBrowser; next: Boolean);
procedure TCustomChromium.doOnTakeFocus(const Browser: ICefBrowser; next_: Boolean);
begin
If Assigned(fOnTakeFocus) then fOnTakeFocus(Self, Browser, next);
If Assigned(fOnTakeFocus) then fOnTakeFocus(Self, Browser, next_);
end;

function TCustomChromium.doOnSetFocus(const Browser: ICefBrowser; Source: TCefFocusSource): Boolean;
Expand Down
8 changes: 4 additions & 4 deletions Examples/LCLCefClient/main.lfm
Expand Up @@ -7,7 +7,7 @@ object FMain: TFMain
ClientHeight = 533
ClientWidth = 1201
OnCreate = FormCreate
LCLVersion = '1.6.2.0'
LCLVersion = '1.6.4.0'
object LUrl: TStaticText
AnchorSideTop.Control = Owner
Left = 8
Expand Down Expand Up @@ -65,7 +65,7 @@ object FMain: TFMain
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 10
Images = TabIcons
TabOrder = 3
TabOrder = 5
OnChange = TabsChange
end
object BNewTab: TButton
Expand All @@ -80,7 +80,7 @@ object FMain: TFMain
BorderSpacing.Right = 5
Caption = '+'
OnClick = BNewTabClick
TabOrder = 4
TabOrder = 3
end
object BCloseTab: TButton
AnchorSideTop.Control = Owner
Expand All @@ -96,7 +96,7 @@ object FMain: TFMain
Caption = '-'
Enabled = False
OnClick = BCloseTabClick
TabOrder = 5
TabOrder = 4
end
object TabIcons: TImageList
left = 1152
Expand Down
22 changes: 22 additions & 0 deletions Examples/LCLCefClient/webpanel.pas
Expand Up @@ -18,6 +18,7 @@ TWebPanel = class(TTabSheet)
fUrl: String;
fIconGetter: TFaviconGetter;

procedure ChromiumTakeFocus(Sender: TObject; const Browser: ICefBrowser; next_: Boolean);
procedure ChromiumTitleChange(Sender: TObject; const Browser: ICefBrowser; const title: ustring);
procedure ChromiumAddressChange(Sender: TObject; const Browser: ICefBrowser;
const Frame: ICefFrame; const url: ustring);
Expand Down Expand Up @@ -153,6 +154,25 @@ procedure TWebPanel.ChromiumTitleChange(Sender: TObject; const Browser: ICefBrow
Else Caption := UTF8Copy(NewTitle, 1, 12) + '...';
end;

procedure TWebPanel.ChromiumTakeFocus(Sender: TObject; const Browser: ICefBrowser; next_: Boolean);
Var
NextPageIndex: Integer;
begin
If next_ then NextPageIndex := PageIndex + 1
Else NextPageIndex := PageIndex - 1;

If (NextPageIndex >= 0) and (NextPageIndex < PageControl.PageCount) then
begin
// Select next tab if available
PageControl.ActivePageIndex := NextPageIndex;
end
Else
begin
// otherwise select next component on form
FMain.SelectNext(FMain.ActiveControl, next_, True);
end;
end;

procedure TWebPanel.ChromiumAddressChange(Sender: TObject; const Browser: ICefBrowser;
const Frame: ICefFrame; const url: ustring);
begin
Expand Down Expand Up @@ -482,10 +502,12 @@ procedure TWebPanel.InitializeChromium;
If not Assigned(fChromium) then
begin
fChromium := TChromium.Create(Self);
fChromium.TabStop := True;
fChromium.Parent := Self;
fChromium.AnchorAsAlign(alClient, 0);

// Register callbacks
fChromium.OnTakeFocus := @ChromiumTakeFocus;
fChromium.OnTitleChange := @ChromiumTitleChange;
fChromium.OnAddressChange := @ChromiumAddressChange;
fChromium.OnFaviconUrlchange := @ChromiumFaviconUrlchange;
Expand Down
3 changes: 3 additions & 0 deletions Examples/LCLSimple/main.lfm
Expand Up @@ -62,8 +62,11 @@ object Mainform: TMainform
Height = 428
Top = 48
Width = 810
TabStop = True
Anchors = [akTop, akLeft, akRight, akBottom]
TabOrder = 3
OnTitleChange = ChromiumTitleChange
OnTakeFocus = ChromiumTakeFocus
OnLoadEnd = ChromiumLoadEnd
DefaultUrl = 'about:blank'
end
Expand Down
6 changes: 6 additions & 0 deletions Examples/LCLSimple/main.pas
Expand Up @@ -20,6 +20,7 @@ TMainform = class(TForm)
procedure BGoClick(Sender: TObject);
procedure ChromiumLoadEnd(Sender: TObject; const Browser: ICefBrowser; const Frame: ICefFrame;
httpStatusCode: Integer);
procedure ChromiumTakeFocus(Sender: TObject; const Browser: ICefBrowser; next_: Boolean);
procedure ChromiumTitleChange(Sender: TObject; const Browser: ICefBrowser; const title: ustring);
procedure EUrlKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormCreate(Sender: TObject);
Expand Down Expand Up @@ -49,6 +50,11 @@ procedure TMainform.ChromiumLoadEnd(Sender: TObject; const Browser: ICefBrowser;
EUrl.Text := UTF8Encode(Browser.MainFrame.Url);
end;

procedure TMainform.ChromiumTakeFocus(Sender: TObject; const Browser: ICefBrowser; next_: Boolean);
begin
SelectNext(ActiveControl, next_, True);
end;

procedure TMainform.ChromiumTitleChange(Sender: TObject; const Browser: ICefBrowser; const title: ustring);
begin
Caption := 'Browser - ' + UTF8Encode(title);
Expand Down
4 changes: 2 additions & 2 deletions cef3gui.pas
Expand Up @@ -73,7 +73,7 @@
TOnFindResult = procedure(Sender: TObject; browser: ICefBrowser; identifier, count: Integer; const selectionRect: TCefRect; activeMatchOridinal: Integer; finalUpdate: Boolean) of object;

{ FocusHandler }
TOnTakeFocus = procedure(Sender: TObject; const Browser: ICefBrowser; next: Boolean) of object;
TOnTakeFocus = procedure(Sender: TObject; const Browser: ICefBrowser; next_: Boolean) of object;
TOnSetFocus = procedure(Sender: TObject; const Browser: ICefBrowser; Source: TCefFocusSource; out Result: Boolean) of object;
TOnGotFocus = procedure(Sender: TObject; const Browser: ICefBrowser) of object;

Expand Down Expand Up @@ -302,7 +302,7 @@ TChromiumFontOptions = class(TPersistent)
const selectionRect: TCefRect; activeMatchOridinal: Integer; finalUpdate: Boolean);

{ CefFocusHandler }
procedure doOnTakeFocus(const Browser: ICefBrowser; next: Boolean);
procedure doOnTakeFocus(const Browser: ICefBrowser; next_: Boolean);
function doOnSetFocus(const Browser: ICefBrowser; Source: TCefFocusSource): Boolean;
procedure doOnGotFocus(const Browser: ICefBrowser);

Expand Down

0 comments on commit 00621e9

Please sign in to comment.