From c102093b41b7bbba606f50dd6e04b452c3309e81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BA=A2=E5=B2=A9?= Date: Wed, 16 Aug 2023 17:59:39 +0800 Subject: [PATCH] U: lcl window SetFocus --- cef/browser-window-lcl.go | 11 ++++++++++- .../close-for-hidden/close-for-hidden.go | 3 ++- pkgs/ext/lcl-extend.go | 18 +++++++++++++----- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/cef/browser-window-lcl.go b/cef/browser-window-lcl.go index 967a5c4..eb18dd0 100644 --- a/cef/browser-window-lcl.go +++ b/cef/browser-window-lcl.go @@ -610,7 +610,9 @@ func (m *LCLBrowserWindow) Minimize() { // Restore func (m *LCLBrowserWindow) Restore() { - m.SetWindowState(types.WsNormal) + m.RunOnMainThread(func() { + m.SetWindowState(types.WsNormal) + }) } // DisableTransparent 禁用口透明 @@ -737,6 +739,13 @@ func (m *LCLBrowserWindow) IsLCL() bool { return true } +// SetFocus 设置窗口焦点 +func (m *LCLBrowserWindow) SetFocus() { + m.Minimize() + m.Restore() + m.TForm.SetFocus() +} + // show 内部调用 func (m *LCLBrowserWindow) show(sender lcl.IObject) { if m.onShow != nil { diff --git a/example/window/close-for-hidden/close-for-hidden.go b/example/window/close-for-hidden/close-for-hidden.go index a9ac23e..8c020e3 100644 --- a/example/window/close-for-hidden/close-for-hidden.go +++ b/example/window/close-for-hidden/close-for-hidden.go @@ -52,7 +52,8 @@ func main() { println("LCL 窗口隐藏, 5秒后显示.") time.Sleep(time.Second * 5) window.RunOnMainThread(func() { - window.Show() //显示窗口 + bw.Show() + bw.SetFocus() }) }() return true //跳过默认事件, 如果想关闭窗口,这里返回false diff --git a/pkgs/ext/lcl-extend.go b/pkgs/ext/lcl-extend.go index fb892c5..2a6fc96 100644 --- a/pkgs/ext/lcl-extend.go +++ b/pkgs/ext/lcl-extend.go @@ -39,21 +39,21 @@ type ObjectProperty struct { func init() { var lclExtImportDefs = []*dllimports.ImportTable{ - //LCL Extend dllimports.NewEnergyImport("Ext_Panel_GetBevelColor", 0), dllimports.NewEnergyImport("Ext_Panel_SetBevelColor", 0), dllimports.NewEnergyImport("Ext_ReadStringProperty", 0), + dllimports.NewEnergyImport("Ext_Form_Activate", 0), + dllimports.NewEnergyImport("Ext_Form_Deactivate", 0), } imports.SetLClExtImportDefs(lclExtImportDefs) } const ( - //null nil - null_nil = iota - //LCL Extend - Ext_Panel_GetBevelColor + Ext_Panel_GetBevelColor = iota Ext_Panel_SetBevelColor Ext_ReadStringProperty + Ext_Form_Activate + Ext_Form_Deactivate ) func PanelBevelColor(panel *lcl.TPanel) types.TColor { @@ -70,6 +70,14 @@ func readObjectStringProperty(sender lcl.IObject) string { return api.GoStr(r1) } +func FormActivate(form *lcl.TForm) { + imports.ExtProc(Ext_Form_Activate).Call(form.Instance()) +} + +func FormDeactivate(form *lcl.TForm) { + imports.ExtProc(Ext_Form_Deactivate).Call(form.Instance()) +} + func ReadObjectStringProperty(sender lcl.IObject) map[string]ObjectProperty { str := readObjectStringProperty(sender) strs := strings.Split(str, "\n") -- GitLab