From c0a03f0098dce5cce337235d024240365f1167d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salvador=20D=C3=ADaz=20Fau?= Date: Mon, 10 Feb 2025 16:56:19 +0100 Subject: [PATCH] Fixed initial browser focus in SimpleOSRBrowser for Linux-GTK2 --- .../SimpleOSRBrowser/usimpleosrbrowser.lfm | 80 ++++++++++--------- .../SimpleOSRBrowser/usimpleosrbrowser.pas | 28 ++++--- update_CEF4Delphi.json | 2 +- 3 files changed, 61 insertions(+), 49 deletions(-) diff --git a/demos/Lazarus_Linux_GTK2/SimpleOSRBrowser/usimpleosrbrowser.lfm b/demos/Lazarus_Linux_GTK2/SimpleOSRBrowser/usimpleosrbrowser.lfm index 6b01511a..cc161bf1 100644 --- a/demos/Lazarus_Linux_GTK2/SimpleOSRBrowser/usimpleosrbrowser.lfm +++ b/demos/Lazarus_Linux_GTK2/SimpleOSRBrowser/usimpleosrbrowser.lfm @@ -1,12 +1,11 @@ object Form1: TForm1 Left = 1658 - Height = 1260 + Height = 630 Top = 423 - Width = 2000 + Width = 1000 Caption = ' Initializing browser. Please wait...' - ClientHeight = 1260 - ClientWidth = 2000 - DesignTimePPI = 192 + ClientHeight = 630 + ClientWidth = 1000 OnActivate = FormActivate OnCloseQuery = FormCloseQuery OnCreate = FormCreate @@ -15,30 +14,29 @@ object Form1: TForm1 OnShow = FormShow OnWindowStateChange = FormWindowStateChange Position = poScreenCenter - LCLVersion = '3.8.0.0' object AddressPnl: TPanel Left = 0 - Height = 60 + Height = 30 Top = 0 - Width = 2000 + Width = 1000 Align = alTop - ClientHeight = 60 - ClientWidth = 2000 + ClientHeight = 30 + ClientWidth = 1000 TabOrder = 0 object Panel2: TPanel - Left = 1867 - Height = 58 + Left = 933 + Height = 28 Top = 1 - Width = 132 + Width = 66 Align = alRight - ClientHeight = 58 - ClientWidth = 132 - TabOrder = 0 + ClientHeight = 28 + ClientWidth = 66 + TabOrder = 1 object GoBtn: TButton Left = 1 - Height = 56 + Height = 26 Top = 1 - Width = 62 + Width = 31 Align = alLeft Caption = 'Go' TabOrder = 0 @@ -46,13 +44,13 @@ object Form1: TForm1 OnEnter = GoBtnEnter end object SnapshotBtn: TButton - Left = 69 - Height = 56 + Left = 34 + Height = 26 Top = 1 - Width = 62 + Width = 31 Align = alRight Caption = 'ยต' - Font.Height = -48 + Font.Height = -24 Font.Name = 'Webdings' ParentFont = False TabOrder = 1 @@ -62,15 +60,22 @@ object Form1: TForm1 end object AddressCb: TComboBox Left = 1 - Height = 58 + Height = 28 Top = 1 - Width = 1866 + Width = 932 Align = alClient AutoSelect = False ItemHeight = 0 - ItemIndex = 0 + ItemIndex = 7 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' @@ -119,15 +124,16 @@ object Form1: TForm1 'chrome://extensions-support' 'chrome://process-internals' ) - TabOrder = 1 - Text = 'https://www.google.com' + TabOrder = 0 + Text = 'https://www.baidu.com' + OnEnter = AddressCbEnter end end object Panel1: TBufferPanel Left = 0 - Height = 1200 - Top = 60 - Width = 2000 + Height = 600 + Top = 30 + Width = 1000 OnIMEPreEditStart = Panel1IMEPreEditStart OnIMEPreEditEnd = Panel1IMEPreEditEnd OnIMEPreEditChanged = Panel1IMEPreEditChanged @@ -138,7 +144,6 @@ object Form1: TForm1 ParentColor = False TabOrder = 1 TabStop = True - OnClick = Panel1Click OnEnter = Panel1Enter OnExit = Panel1Exit OnMouseDown = Panel1MouseDown @@ -151,6 +156,7 @@ object Form1: TForm1 end object Chromium1: TChromium OnProcessMessageReceived = Chromium1ProcessMessageReceived + OnSetFocus = Chromium1SetFocus OnTooltip = Chromium1Tooltip OnCursorChange = Chromium1CursorChange OnBeforePopup = Chromium1BeforePopup @@ -164,20 +170,20 @@ object Form1: TForm1 OnPopupSize = Chromium1PopupSize OnPaint = Chromium1Paint OnDevToolsMethodResult = Chromium1DevToolsMethodResult - Left = 96 - Top = 144 + Left = 48 + Top = 72 end object Timer1: TTimer Enabled = False OnTimer = Timer1Timer - Left = 96 - Top = 288 + Left = 48 + Top = 144 end object SaveDialog1: TSaveDialog Title = 'Save screenshot bitmap as' DefaultExt = '.bmp' Filter = 'Bitmap file|*.bmp' - Left = 96 - Top = 432 + Left = 48 + Top = 216 end end diff --git a/demos/Lazarus_Linux_GTK2/SimpleOSRBrowser/usimpleosrbrowser.pas b/demos/Lazarus_Linux_GTK2/SimpleOSRBrowser/usimpleosrbrowser.pas index 44fbf53e..0c14341e 100644 --- a/demos/Lazarus_Linux_GTK2/SimpleOSRBrowser/usimpleosrbrowser.pas +++ b/demos/Lazarus_Linux_GTK2/SimpleOSRBrowser/usimpleosrbrowser.pas @@ -29,7 +29,6 @@ type Panel2: TPanel; Timer1: TTimer; - procedure Panel1Click(Sender: TObject); procedure Panel1Enter(Sender: TObject); procedure Panel1Exit(Sender: TObject); procedure Panel1IMECommit(Sender: TObject; const aCommitText: ustring); @@ -58,6 +57,7 @@ type procedure Chromium1Tooltip(Sender: TObject; const browser: ICefBrowser; var aText: ustring; out Result: Boolean); procedure Chromium1ProcessMessageReceived(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; sourceProcess: TCefProcessId; const message: ICefProcessMessage; out Result: Boolean); procedure Chromium1DevToolsMethodResult(Sender: TObject; const browser: ICefBrowser; message_id: integer; success: boolean; const result: ICefValue); + procedure Chromium1SetFocus(Sender: TObject; const browser: ICefBrowser; source: TCefFocusSource; out Result: Boolean); procedure FormActivate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); @@ -74,8 +74,8 @@ type procedure GoBtnEnter(Sender: TObject); procedure SnapshotBtnClick(Sender: TObject); - procedure Timer1Timer(Sender: TObject); - procedure AddressEdtEnter(Sender: TObject); + procedure Timer1Timer(Sender: TObject); + procedure AddressCbEnter(Sender: TObject); private protected @@ -95,6 +95,7 @@ type FDevToolsStatus : TDevToolsStatus; FCheckEditable : boolean; FWasEditing : boolean; + FBrowserIsFocused : boolean; {$IFDEF CEF_USE_IME} FIMEHandler : TCEFLinuxOSRIMEHandler; {$ENDIF} @@ -366,14 +367,15 @@ begin SendCompMessage(CEF_AFTERCREATED); end; -procedure TForm1.AddressEdtEnter(Sender: TObject); +procedure TForm1.Chromium1SetFocus(Sender: TObject; const browser: ICefBrowser; + source: TCefFocusSource; out Result: Boolean); begin - Chromium1.SetFocus(False); + Result := not(FBrowserIsFocused); end; -procedure TForm1.Panel1Click(Sender: TObject); +procedure TForm1.AddressCbEnter(Sender: TObject); begin - Panel1.SetFocus; + Chromium1.SetFocus(False); end; procedure TForm1.FormWindowStateChange(Sender: TObject); @@ -386,7 +388,7 @@ begin else begin Chromium1.WasHidden(False); - Chromium1.SetFocus(Panel1.Focused); + Chromium1.SetFocus(FBrowserIsFocused); end; end; @@ -394,7 +396,7 @@ procedure TForm1.Application_OnActivate(Sender: TObject); begin IsEditing := FWasEditing; FCheckEditable := True; - Chromium1.SetFocus(Panel1.Focused); + Chromium1.SetFocus(FBrowserIsFocused); end; procedure TForm1.Application_OnDeactivate(Sender: TObject); @@ -634,12 +636,14 @@ procedure TForm1.Panel1Enter(Sender: TObject); begin IsEditing := FWasEditing; FCheckEditable := True; + FBrowserIsFocused := True; Chromium1.SetFocus(True); end; procedure TForm1.Panel1Exit(Sender: TObject); begin FWasEditing := IsEditing; + FBrowserIsFocused := False; Chromium1.SetFocus(False); {$IFDEF CEF_USE_IME} FIMEHandler.Blur; @@ -1008,7 +1012,8 @@ begin FResizing := False; FPendingResize := False; FCanClose := False; - FClosing := False; + FClosing := False; + FBrowserIsFocused := False; FResizeCS := TCriticalSection.Create; FBrowserCS := TCriticalSection.Create; {$IFDEF CEF_USE_IME} @@ -1042,7 +1047,7 @@ end; procedure TForm1.FormShow(Sender: TObject); begin Chromium1.WasHidden(False); - Chromium1.SetFocus(Panel1.Focused); + Chromium1.SetFocus(FBrowserIsFocused); end; procedure TForm1.GoBtnEnter(Sender: TObject); @@ -1069,6 +1074,7 @@ begin Caption := 'Simple OSR Browser'; AddressPnl.Enabled := True; + Chromium1.SetFocus(FBrowserIsFocused); Chromium1.NotifyMoveOrResizeStarted; end; diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json index 4df94f9f..43b3b0a5 100644 --- a/update_CEF4Delphi.json +++ b/update_CEF4Delphi.json @@ -2,7 +2,7 @@ "UpdateLazPackages" : [ { "ForceNotify" : true, - "InternalVersion" : 697, + "InternalVersion" : 698, "Name" : "cef4delphi_lazarus.lpk", "Version" : "132.3.2" }