From 36679d94f60112366180e9418083ecb9198ea299 Mon Sep 17 00:00:00 2001 From: dliw Date: Sat, 3 Sep 2016 16:06:45 +0200 Subject: [PATCH] improve focus handling in OSR demo --- Examples/OSRDemo/main.lfm | 31 ++++++++++++++++++++++--------- Examples/OSRDemo/main.pas | 16 +++++++++++++++- Examples/OSRDemo/osrdemo.lpi | 2 +- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/Examples/OSRDemo/main.lfm b/Examples/OSRDemo/main.lfm index e802f91..10cc596 100644 --- a/Examples/OSRDemo/main.lfm +++ b/Examples/OSRDemo/main.lfm @@ -1,13 +1,13 @@ object Mainform: TMainform - Left = 338 + Left = 643 Height = 475 - Top = 133 + Top = 320 Width = 762 Caption = 'Browser -' ClientHeight = 475 ClientWidth = 762 OnCreate = FormCreate - LCLVersion = '1.4.2.0' + LCLVersion = '1.6.0.4' object BGo: TButton AnchorSideTop.Control = Owner AnchorSideRight.Control = Owner @@ -53,7 +53,7 @@ object Mainform: TMainform TabOrder = 2 Text = 'http://' end - object PaintBox: TPaintBox + object OSRPanel: TPanel AnchorSideLeft.Control = Owner AnchorSideTop.Control = EUrl AnchorSideTop.Side = asrBottom @@ -67,11 +67,24 @@ object Mainform: TMainform Width = 762 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Top = 10 - OnMouseDown = PaintBoxMouseDown - OnMouseMove = PaintBoxMouseMove - OnMouseUp = PaintBoxMouseUp - OnMouseWheel = PaintBoxMouseWheel - OnResize = PaintBoxResize + BevelOuter = bvNone + ClientHeight = 430 + ClientWidth = 762 + TabOrder = 3 + OnEnter = OSRPanelEnter + OnExit = OSRPanelExit + object PaintBox: TPaintBox + Left = 0 + Height = 430 + Top = 0 + Width = 762 + Align = alClient + OnMouseDown = PaintBoxMouseDown + OnMouseMove = PaintBoxMouseMove + OnMouseUp = PaintBoxMouseUp + OnMouseWheel = PaintBoxMouseWheel + OnResize = PaintBoxResize + end end object Chromium: TChromiumOSR OnGetRootScreenRect = ChromiumGetRootScreenRect diff --git a/Examples/OSRDemo/main.pas b/Examples/OSRDemo/main.pas index 6a23576..23e68a4 100644 --- a/Examples/OSRDemo/main.pas +++ b/Examples/OSRDemo/main.pas @@ -19,6 +19,7 @@ TMainform = class(TForm) EUrl : TEdit; LUrl : TStaticText; PaintBox : TPaintBox; + OSRPanel: TPanel; procedure BGoClick(Sender : TObject); procedure ChromiumGetRootScreenRect(Sender : TObject; const Browser : ICefBrowser; rect : PCefRect; out Result : Boolean); @@ -30,6 +31,8 @@ TMainform = class(TForm) procedure EUrlKeyDown(Sender : TObject; var Key : Word; Shift : TShiftState); procedure FormCreate(Sender : TObject); + procedure OSRPanelEnter(Sender: TObject); + procedure OSRPanelExit(Sender: TObject); procedure PaintBoxMouseDown(Sender : TObject; Button : TMouseButton; Shift : TShiftState; X, Y : Integer); procedure PaintBoxMouseMove(Sender : TObject; Shift : TShiftState; @@ -140,6 +143,8 @@ procedure TMainform.PaintBoxMouseDown(Sender : TObject; Button : TMouseButton; Var MouseEvent: TCefMouseEvent; begin + OSRPanel.SetFocus; + MouseEvent.x := X; MouseEvent.y := Y; MouseEvent.modifiers := getModifiers(Shift); @@ -184,7 +189,6 @@ procedure TMainform.PaintBoxMouseWheel(Sender : TObject; Shift : TShiftState; Wh procedure TMainform.PaintBoxResize(Sender : TObject); begin Chromium.Browser.Host.WasResized; - Chromium.Browser.Host.SendFocusEvent(1); Application.ProcessMessages; end; @@ -194,4 +198,14 @@ procedure TMainform.FormCreate(Sender : TObject); //CefBrowserSubprocessPath := '.' + PathDelim + 'subprocess'{$IFDEF WINDOWS}+'.exe'{$ENDIF}; end; +procedure TMainform.OSRPanelEnter(Sender: TObject); +begin + Chromium.Browser.Host.SendFocusEvent(True); +end; + +procedure TMainform.OSRPanelExit(Sender: TObject); +begin + Chromium.Browser.Host.SendFocusEvent(False); +end; + end. diff --git a/Examples/OSRDemo/osrdemo.lpi b/Examples/OSRDemo/osrdemo.lpi index ba0d081..e79bdd8 100644 --- a/Examples/OSRDemo/osrdemo.lpi +++ b/Examples/OSRDemo/osrdemo.lpi @@ -118,7 +118,7 @@ - +