From b711d3767a21d6e30a747b42a4da4ad603031e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BA=A2=E5=B2=A9?= Date: Fri, 6 Jan 2023 13:50:44 +0800 Subject: [PATCH] v2.2.1 Fixed Chinese input and gtk3 issues for linux packaging --- cef/cef-aux-dev-tools-window.go | 4 +- cef/cef-aux-view-source-window.go | 14 +- cef/cef-browser-config.go | 6 +- cef/cef-browser-window.go | 50 +++--- cef/cef-browser.go | 2 +- cef/cef-commponent-tray_window.go | 2 +- cef/cef-lcl-browser-window.go | 55 +++++- cef/cef-views-framework-browser-window.go | 160 ++++++++++++++++-- cef/window-component_windows.go | 9 +- cef/window.go | 41 ++++- .../src/main-browser-window.go | 6 +- example/browser-cookie/cookie.go | 2 +- example/browser-download/download.go | 4 +- example/browser-linux/linux.go | 2 +- example/mini-browser/src/min-browser.go | 40 ++--- 15 files changed, 307 insertions(+), 90 deletions(-) diff --git a/cef/cef-aux-dev-tools-window.go b/cef/cef-aux-dev-tools-window.go index bcd880e..21e85bf 100644 --- a/cef/cef-aux-dev-tools-window.go +++ b/cef/cef-aux-dev-tools-window.go @@ -22,9 +22,9 @@ const ( func updateBrowserDevTools(browser *ICefBrowser, title string) { if browserWinInfo := BrowserWindow.GetWindowInfo(browser.Identifier()); browserWinInfo != nil { - if browserWinInfo.auxTools != nil && browserWinInfo.auxTools.devToolsWindow != nil { + if browserWinInfo.getAuxTools() != nil && browserWinInfo.getAuxTools().devToolsWindow != nil { QueueAsyncCall(func(id int) { - browserWinInfo.auxTools.devToolsWindow.SetCaption(fmt.Sprintf("%s - %s", dev_tools_name, browser.MainFrame().Url)) + browserWinInfo.getAuxTools().devToolsWindow.SetCaption(fmt.Sprintf("%s - %s", dev_tools_name, browser.MainFrame().Url)) }) } } diff --git a/cef/cef-aux-view-source-window.go b/cef/cef-aux-view-source-window.go index 046f3e6..de7568e 100644 --- a/cef/cef-aux-view-source-window.go +++ b/cef/cef-aux-view-source-window.go @@ -22,7 +22,7 @@ func updateBrowserViewSource(browser *ICefBrowser, title string) { if browserWinInfo := BrowserWindow.GetWindowInfo(browser.Identifier()); browserWinInfo != nil && browserWinInfo.WindowType() == WT_VIEW_SOURCE { QueueAsyncCall(func(id int) { if mainFrame := browser.MainFrame(); mainFrame != nil { - browserWinInfo.SetCaption(fmt.Sprintf("%s - %s", view_source_name, mainFrame.Url)) + browserWinInfo.SetTitle(fmt.Sprintf("%s - %s", view_source_name, mainFrame.Url)) } else { logger.Error("failed to get main frame") } @@ -32,8 +32,8 @@ func updateBrowserViewSource(browser *ICefBrowser, title string) { func viewSourceAfterCreate(browser *ICefBrowser) bool { if winInfo := BrowserWindow.GetWindowInfo(browser.Identifier()); winInfo != nil { - if winInfo.WindowType() == WT_VIEW_SOURCE && winInfo.auxTools.viewSourceWindow != nil { - winInfo.auxTools.viewSourceWindow.chromium.LoadUrl(winInfo.auxTools.viewSourceUrl) + if winInfo.WindowType() == WT_VIEW_SOURCE && winInfo.getAuxTools().viewSourceWindow != nil { + winInfo.getAuxTools().viewSourceWindow.chromium.LoadUrl(winInfo.getAuxTools().viewSourceUrl) return true } } @@ -53,11 +53,9 @@ func createBrowserViewSource(browser *ICefBrowser, frame *ICefFrame) { m.SetWidth(1024) m.SetHeight(768) if winInfo := BrowserWindow.GetWindowInfo(m.windowId); winInfo != nil { - if winInfo.auxTools == nil { - winInfo.auxTools = &auxTools{} - } - winInfo.auxTools.viewSourceUrl = viewSourceUrl - winInfo.auxTools.viewSourceWindow = m + winInfo.createAuxTools() + winInfo.getAuxTools().viewSourceUrl = viewSourceUrl + winInfo.getAuxTools().viewSourceWindow = m } m.Show() } else { diff --git a/cef/cef-browser-config.go b/cef/cef-browser-config.go index 3024bb3..73e020b 100644 --- a/cef/cef-browser-config.go +++ b/cef/cef-browser-config.go @@ -12,9 +12,9 @@ import ( "github.com/energye/energy/common" ) -type viewsFrameBrowserWindowOnEventCallback func(event *BrowserEvent, window *ViewsFrameworkBrowserWindow) -type browserWindowOnEventCallback func(event *BrowserEvent, window *LCLBrowserWindow) -type browserWindowAfterOnEventCallback func(window *LCLBrowserWindow) +type viewsFrameBrowserWindowOnEventCallback func(event *BrowserEvent, window IViewsFrameworkBrowserWindow) +type browserWindowOnEventCallback func(event *BrowserEvent, window ILCLBrowserWindow) +type browserWindowAfterOnEventCallback func(window ILCLBrowserWindow) //创建主窗口指定的一些快捷配置属性 type browserConfig struct { diff --git a/cef/cef-browser-window.go b/cef/cef-browser-window.go index 2d39a96..bc13931 100644 --- a/cef/cef-browser-window.go +++ b/cef/cef-browser-window.go @@ -30,7 +30,7 @@ var ( Config: &browserConfig{ WindowProperty: *NewWindowProperty(), }, - windowInfo: make(map[int32]*LCLBrowserWindow), + windowInfo: make(map[int32]IBrowserWindow), windowSerial: 1, } browserProcessStartAfterCallback browserProcessStartAfterCallbackFunc @@ -49,13 +49,13 @@ func SetBrowserProcessStartAfterCallback(callback browserProcessStartAfterCallba // 浏览器包装结构体 type browser struct { - mainBrowserWindow *browserWindow //主浏览器窗口 - mainVFBrowserWindow *vfBrowserWindow //主浏览器窗口 - popupWindow *LCLBrowserWindow //弹出的子窗口 - browserEvent *BrowserEvent //浏览器全局事件 - Config *browserConfig //浏览器和窗口配置 - windowInfo map[int32]*LCLBrowserWindow //窗口信息集合 - windowSerial int32 //窗口序号 + mainBrowserWindow *browserWindow //主浏览器窗口 + mainVFBrowserWindow IViewsFrameworkBrowserWindow //主浏览器窗口 + popupWindow *LCLBrowserWindow //弹出的子窗口 + browserEvent *BrowserEvent //浏览器全局事件 + Config *browserConfig //浏览器和窗口配置 + windowInfo map[int32]IBrowserWindow //窗口信息集合 + windowSerial int32 //窗口序号 } // 浏览器全局事件监听-扩展 @@ -83,13 +83,6 @@ type BrowserEvent struct { type browserWindow struct { LCLBrowserWindow isFirstActivate bool - tray ITray -} - -type vfBrowserWindow struct { - ViewsFrameworkBrowserWindow - isFirstActivate bool - tray ITray } // 运行应用 @@ -183,7 +176,7 @@ func (m *browserWindow) OnFormCreate(sender lcl.IObject) { } func (m *browser) MainWindow() *LCLBrowserWindow { - return &m.mainBrowserWindow.LCLBrowserWindow + return m.mainBrowserWindow.BrowserWindow() } // 基于CEF views framework窗口 - 主窗口和chromium初始化时回调 @@ -255,18 +248,18 @@ func (m *browser) createNextPopupWindow() { } // 拿到窗口信息 -func (m *browser) GetWindowInfo(browserId int32) *LCLBrowserWindow { +func (m *browser) GetWindowInfo(browserId int32) IBrowserWindow { if winInfo, ok := m.windowInfo[browserId]; ok { return winInfo } return nil } -func (m *browser) GetWindowsInfo() map[int32]*LCLBrowserWindow { +func (m *browser) GetWindowsInfo() map[int32]IBrowserWindow { return m.windowInfo } -func (m *browser) putWindowInfo(browserId int32, windowInfo *LCLBrowserWindow) { +func (m *browser) putWindowInfo(browserId int32, windowInfo IBrowserWindow) { m.windowInfo[browserId] = windowInfo } @@ -277,38 +270,35 @@ func (m *browser) removeWindowInfo(browseId int32) { func (m *browser) GetBrowser(browseId int32) *ICefBrowser { if winInfo, ok := m.windowInfo[browseId]; ok { - return winInfo.browser + return winInfo.Browser() } return nil } func (m *browser) putBrowserFrame(browser *ICefBrowser, frame *ICefFrame) { if winInfo, ok := m.windowInfo[browser.Identifier()]; ok { - if winInfo.frames == nil { - winInfo.frames = make(TCEFFrame) - } - winInfo.browser = browser - winInfo.frames[frame.Id] = frame + winInfo.setBrowser(browser) + winInfo.addFrame(frame) } } func (m *browser) GetFrames(browseId int32) map[int64]*ICefFrame { if winInfo, ok := m.windowInfo[browseId]; ok { - return winInfo.frames + return winInfo.Frames() } return nil } func (m *browser) GetFrame(browseId int32, frameId int64) *ICefFrame { if winInfo, ok := m.windowInfo[browseId]; ok { - return winInfo.frames[frameId] + return winInfo.Frames()[frameId] } return nil } func (m *browser) RemoveFrame(browseId int32, frameId int64) { if winInfo, ok := m.windowInfo[browseId]; ok { - delete(winInfo.frames, frameId) + delete(winInfo.Frames(), frameId) } } @@ -321,9 +311,9 @@ func (m *browser) IsSameFrame(browseId int32, frameId int64) bool { func (m *browser) removeNoValidFrames() { for _, winInfo := range m.windowInfo { - for _, frm := range winInfo.frames { + for _, frm := range winInfo.Frames() { if !frm.IsValid() { - delete(winInfo.frames, frm.Id) + delete(winInfo.Frames(), frm.Id) } } } diff --git a/cef/cef-browser.go b/cef/cef-browser.go index e726ccc..901c4a8 100644 --- a/cef/cef-browser.go +++ b/cef/cef-browser.go @@ -244,7 +244,7 @@ func (m *ICefBrowser) ViewSource(frame *ICefFrame) { //显示开发者工具 func (m *ICefBrowser) ShowDevTools() { if browserWinInfo := BrowserWindow.GetWindowInfo(m.Identifier()); browserWinInfo != nil { - createBrowserDevTools(m, browserWinInfo) + createBrowserDevTools(m, browserWinInfo.AsLCLBrowserWindow().BrowserWindow()) } } diff --git a/cef/cef-commponent-tray_window.go b/cef/cef-commponent-tray_window.go index 1141636..926ff15 100644 --- a/cef/cef-commponent-tray_window.go +++ b/cef/cef-commponent-tray_window.go @@ -59,7 +59,7 @@ func (m *tCefTrayForm) Tray() *Tray { } func (m *tCefTrayForm) Show() { - if BrowserWindow.mainBrowserWindow.chromium == nil || !BrowserWindow.mainBrowserWindow.chromium.Initialized() { + if BrowserWindow.mainBrowserWindow.Chromium() == nil || !BrowserWindow.mainBrowserWindow.Chromium().Initialized() { return } m.TForm.Show() diff --git a/cef/cef-lcl-browser-window.go b/cef/cef-lcl-browser-window.go index 0100884..5844189 100644 --- a/cef/cef-lcl-browser-window.go +++ b/cef/cef-lcl-browser-window.go @@ -54,6 +54,7 @@ type LCLBrowserWindow struct { isChromiumCreate bool //是否创建完成 Chromium frames TCEFFrame //当前浏览器下的所有frame auxTools *auxTools //辅助工具 + tray ITray // } //创建一个带有 chromium 窗口 @@ -74,10 +75,58 @@ func NewBrowserWindow(config *tCefChromiumConfig, windowProperty *WindowProperty return window } +func (m *LCLBrowserWindow) BrowserWindow() *LCLBrowserWindow { + return m +} + +func (m *LCLBrowserWindow) AsViewsFrameworkBrowserWindow() IViewsFrameworkBrowserWindow { + return nil +} + +func (m *LCLBrowserWindow) AsLCLBrowserWindow() ILCLBrowserWindow { + return m +} + +func (m *LCLBrowserWindow) SetTitle(title string) { + if m.TForm == nil { + return + } + m.TForm.SetCaption(title) +} + +func (m *LCLBrowserWindow) getAuxTools() *auxTools { + return m.auxTools +} + +func (m *LCLBrowserWindow) createAuxTools() { + if m.auxTools == nil { + m.auxTools = &auxTools{} + } +} + func (m *LCLBrowserWindow) Browser() *ICefBrowser { return m.browser } +func (m *LCLBrowserWindow) setBrowser(browser *ICefBrowser) { + m.browser = browser +} + +func (m *LCLBrowserWindow) addFrame(frame *ICefFrame) { + m.createFrames() + m.frames[frame.Id] = frame +} + +func (m *LCLBrowserWindow) Frames() TCEFFrame { + return m.frames +} + +func (m *LCLBrowserWindow) createFrames() { + if m.frames == nil { + m.frames = make(TCEFFrame) + } +} + func (m *LCLBrowserWindow) Chromium() IChromium { return m.chromium } @@ -152,6 +201,10 @@ func (m *LCLBrowserWindow) IsClosing() bool { return m.isClosing } +func (m *LCLBrowserWindow) ITray() { + +} + // 设置窗口类型 func (m *LCLBrowserWindow) SetWindowType(windowType consts.WINDOW_TYPE) { m.windowType = windowType @@ -243,7 +296,7 @@ func (m *LCLBrowserWindow) defaultWindowCloseEvent() { } //启用默认关闭事件行为-该窗口将被关闭 -func (m *LCLBrowserWindow) EnableDefaultClose() { +func (m *LCLBrowserWindow) EnableDefaultCloseEvent() { m.defaultWindowCloseEvent() m.registerDefaultChromiumCloseEvent() } diff --git a/cef/cef-views-framework-browser-window.go b/cef/cef-views-framework-browser-window.go index a740bc1..fc9c57b 100644 --- a/cef/cef-views-framework-browser-window.go +++ b/cef/cef-views-framework-browser-window.go @@ -92,18 +92,6 @@ func NewViewsFrameworkBrowserWindow(chromiumConfig *tCefChromiumConfig, windowPr return m } -func (m *ViewsFrameworkBrowserWindow) Component() lcl.IComponent { - return m.component -} - -func (m *ViewsFrameworkBrowserWindow) WindowComponent() *TCEFWindowComponent { - return m.windowComponent -} - -func (m *ViewsFrameworkBrowserWindow) BrowserViewComponent() *TCEFBrowserViewComponent { - return m.browserViewComponent -} - //ViewsFrameworkBrowserWindow 主窗口初始化 func (m *browser) appContextInitialized(app *TCEFApplication) { if !common.Args.IsMain() { @@ -265,3 +253,151 @@ func (m *ViewsFrameworkBrowserWindow) registerDefaultEvent() { } }) } + +func (m *ViewsFrameworkBrowserWindow) BrowserWindow() *ViewsFrameworkBrowserWindow { + return m +} + +func (m *ViewsFrameworkBrowserWindow) AsViewsFrameworkBrowserWindow() IViewsFrameworkBrowserWindow { + return m +} + +func (m *ViewsFrameworkBrowserWindow) AsLCLBrowserWindow() ILCLBrowserWindow { + return nil +} + +func (m *ViewsFrameworkBrowserWindow) SetTitle(title string) { + m.WindowComponent().SetTitle(title) +} + +func (m *ViewsFrameworkBrowserWindow) getAuxTools() *auxTools { + return m.auxTools +} + +func (m *ViewsFrameworkBrowserWindow) createAuxTools() { + if m.auxTools == nil { + m.auxTools = &auxTools{} + } +} + +func (m *ViewsFrameworkBrowserWindow) Browser() *ICefBrowser { + return m.browser +} + +func (m *ViewsFrameworkBrowserWindow) Frames() TCEFFrame { + return m.frames +} + +func (m *ViewsFrameworkBrowserWindow) createFrames() { + if m.frames == nil { + m.frames = make(TCEFFrame) + } +} + +func (m *ViewsFrameworkBrowserWindow) setBrowser(browser *ICefBrowser) { + m.browser = browser +} + +func (m *ViewsFrameworkBrowserWindow) addFrame(frame *ICefFrame) { + m.createFrames() + m.frames[frame.Id] = frame +} + +func (m *ViewsFrameworkBrowserWindow) Chromium() IChromium { + return m.chromium +} + +func (m *ViewsFrameworkBrowserWindow) Id() int32 { + return m.windowId +} + +func (m *ViewsFrameworkBrowserWindow) Show() { + m.WindowComponent().Show() +} + +func (m *ViewsFrameworkBrowserWindow) Hide() { + m.WindowComponent().Hide() +} + +func (m *ViewsFrameworkBrowserWindow) Close() { + m.WindowComponent().Close() +} + +func (m *ViewsFrameworkBrowserWindow) Maximize() { + m.WindowComponent().Maximize() +} + +func (m *ViewsFrameworkBrowserWindow) Minimize() { + m.WindowComponent().Minimize() +} + +func (m *ViewsFrameworkBrowserWindow) Restore() { + m.WindowComponent().Restore() +} + +func (m *ViewsFrameworkBrowserWindow) CloseBrowserWindow() { + m.chromium.CloseBrowser(true) +} + +func (m *ViewsFrameworkBrowserWindow) CreateTopLevelWindow() { + m.WindowComponent().CreateTopLevelWindow() +} + +func (m *ViewsFrameworkBrowserWindow) CenterWindow(size *TCefSize) { + m.WindowComponent().CenterWindow(size) +} + +//返回窗口关闭状态 +func (m *ViewsFrameworkBrowserWindow) IsClosing() bool { + return m.isClosing +} + +// 返回窗口类型 +func (m *ViewsFrameworkBrowserWindow) WindowType() consts.WINDOW_TYPE { + return m.windowType +} + +// 设置窗口类型 +func (m *ViewsFrameworkBrowserWindow) SetWindowType(windowType consts.WINDOW_TYPE) { + m.windowType = windowType +} + +//禁用最小化按钮 +func (m *ViewsFrameworkBrowserWindow) DisableMinimize() { + m.WindowComponent().SetOnCanMinimize(func(sender lcl.IObject, window *ICefWindow, aResult *bool) { + *aResult = false + }) +} + +//禁用最大化按钮 +func (m *ViewsFrameworkBrowserWindow) DisableMaximize() { + m.WindowComponent().SetOnCanMaximize(func(sender lcl.IObject, window *ICefWindow, aResult *bool) { + *aResult = false + }) +} + +//启用最小化按钮 +func (m *ViewsFrameworkBrowserWindow) EnableMinimize() { + m.WindowComponent().SetOnCanMinimize(func(sender lcl.IObject, window *ICefWindow, aResult *bool) { + *aResult = true + }) +} + +//启用最大化按钮 +func (m *ViewsFrameworkBrowserWindow) EnableMaximize() { + m.WindowComponent().SetOnCanMaximize(func(sender lcl.IObject, window *ICefWindow, aResult *bool) { + *aResult = true + }) +} + +func (m *ViewsFrameworkBrowserWindow) Component() lcl.IComponent { + return m.component +} + +func (m *ViewsFrameworkBrowserWindow) WindowComponent() *TCEFWindowComponent { + return m.windowComponent +} + +func (m *ViewsFrameworkBrowserWindow) BrowserViewComponent() *TCEFBrowserViewComponent { + return m.browserViewComponent +} diff --git a/cef/window-component_windows.go b/cef/window-component_windows.go index faf2527..7fb22b1 100644 --- a/cef/window-component_windows.go +++ b/cef/window-component_windows.go @@ -13,8 +13,11 @@ package cef //只适用于windows的无菜单托盘 func (m *LCLBrowserWindow) NewCefTray(width, height int32, url string) ITray { - if BrowserWindow.mainBrowserWindow.tray == nil { - BrowserWindow.mainBrowserWindow.tray = newCefTray(m, width, height, url) + if BrowserWindow.mainBrowserWindow.AsLCLBrowserWindow() == nil { + return nil } - return BrowserWindow.mainBrowserWindow.tray + if BrowserWindow.mainBrowserWindow.AsLCLBrowserWindow().BrowserWindow().tray == nil { + BrowserWindow.mainBrowserWindow.AsLCLBrowserWindow().BrowserWindow().tray = newCefTray(m, width, height, url) + } + return BrowserWindow.mainBrowserWindow.AsLCLBrowserWindow().BrowserWindow().tray } diff --git a/cef/window.go b/cef/window.go index e6ff6d6..ec35364 100644 --- a/cef/window.go +++ b/cef/window.go @@ -9,6 +9,7 @@ package cef import ( + "github.com/energye/energy/consts" "github.com/energye/golcl/lcl" "github.com/energye/golcl/lcl/types" ) @@ -90,20 +91,56 @@ func NewWindow(windowProperty *WindowProperty, owner ...lcl.IComponent) *LCLBrow } type IBrowserWindow interface { + Id() int32 Show() Hide() - Close() + Maximize() + Minimize() + CloseBrowserWindow() + WindowType() consts.WINDOW_TYPE + SetWindowType(windowType consts.WINDOW_TYPE) + Browser() *ICefBrowser + Chromium() IChromium + DisableMaximize() + DisableMinimize() + EnableMaximize() + EnableMinimize() + IsClosing() bool + AsViewsFrameworkBrowserWindow() IViewsFrameworkBrowserWindow + AsLCLBrowserWindow() ILCLBrowserWindow + Frames() TCEFFrame + addFrame(frame *ICefFrame) + setBrowser(browser *ICefBrowser) + createAuxTools() + getAuxTools() *auxTools + SetTitle(title string) } type ILCLBrowserWindow interface { IBrowserWindow - Id() int32 + BrowserWindow() *LCLBrowserWindow + EnableDefaultCloseEvent() + EnableAllDefaultEvent() + SetDefaultInTaskBar() + SetShowInTaskBar() + SetNotInTaskBar() + WindowParent() ITCefWindowParent + DisableTransparent() + EnableTransparent(value uint8) + DisableSystemMenu() + DisableHelp() + EnableSystemMenu() + EnableHelp() } type IViewsFrameworkBrowserWindow interface { IBrowserWindow + BrowserWindow() *ViewsFrameworkBrowserWindow CreateTopLevelWindow() CenterWindow(size *TCefSize) + Component() lcl.IComponent + WindowComponent() *TCEFWindowComponent + BrowserViewComponent() *TCEFBrowserViewComponent } //创建一个 窗口默认属性 diff --git a/example/browser-control/src/main-browser-window.go b/example/browser-control/src/main-browser-window.go index 8581be9..2c0d1ff 100644 --- a/example/browser-control/src/main-browser-window.go +++ b/example/browser-control/src/main-browser-window.go @@ -28,11 +28,11 @@ func MainBrowserWindow() { config.SetEnableDevTools(true) cef.BrowserWindow.Config.SetChromiumConfig(config) //创建窗口时的回调函数 对浏览器事件设置,和窗口属性组件等创建和修改 - cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow *cef.LCLBrowserWindow) { + cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow cef.ILCLBrowserWindow) { //设置应用图标 这里加载的图标是内置到执行程序里的资源文件 lcl.Application.Icon().LoadFromFSFile("resources/icon.ico") //在窗体初始化时创建窗口内的组件 - back, forward, stop, refresh, progressLabel, addr := controlUI(browserWindow) + back, forward, stop, refresh, progressLabel, addr := controlUI(browserWindow.BrowserWindow()) //页面加载处理进度 event.SetOnLoadingProgressChange(func(sender lcl.IObject, browser *cef.ICefBrowser, progress float64) { //linux 更新UI组件必须使用 QueueAsyncCall 主线程异步同步 @@ -59,7 +59,7 @@ func MainBrowserWindow() { }) }) //创建窗口之后对对主窗口的属性、组件或子窗口的创建 - cef.BrowserWindow.SetBrowserInitAfter(func(browserWindow *cef.LCLBrowserWindow) { + cef.BrowserWindow.SetBrowserInitAfter(func(browserWindow cef.ILCLBrowserWindow) { fmt.Println("SetBrowserInitAfter") }) } diff --git a/example/browser-cookie/cookie.go b/example/browser-cookie/cookie.go index 21e48b7..6345de1 100644 --- a/example/browser-cookie/cookie.go +++ b/example/browser-cookie/cookie.go @@ -51,7 +51,7 @@ func main() { }) }) //在SetBrowserInit中设置cookie事件,这些事件将返回操作后的结果 - cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow *cef.LCLBrowserWindow) { + cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow cef.ILCLBrowserWindow) { //获取cookie时触发 event.SetOnCookiesVisited(func(sender lcl.IObject, cookie *cef.ICefCookie) { fmt.Printf("SetOnCookiesVisited: %+v\n", cookie) diff --git a/example/browser-download/download.go b/example/browser-download/download.go index e86b4a3..a5ddf8e 100644 --- a/example/browser-download/download.go +++ b/example/browser-download/download.go @@ -27,10 +27,10 @@ func main() { //指定一个URL地址,或本地html文件目录 cef.BrowserWindow.Config.Url = "http://localhost:22022/download.html" //在主窗口初始化回调函数里设置浏览器事件 - cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow *cef.LCLBrowserWindow) { + cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow cef.ILCLBrowserWindow) { //linux 下载文件 系统弹出保存对话框不启作用 //所以 自己调用系统的保存对话框获得保存路径 - linuxDlSave := lcl.NewSaveDialog(browserWindow) + linuxDlSave := lcl.NewSaveDialog(browserWindow.BrowserWindow()) linuxDlSave.SetTitle("保存对话框标题") //下载之前事件 diff --git a/example/browser-linux/linux.go b/example/browser-linux/linux.go index 66d5917..4339c4c 100644 --- a/example/browser-linux/linux.go +++ b/example/browser-linux/linux.go @@ -23,7 +23,7 @@ func main() { //指定一个URL地址,或本地html文件目录 cef.BrowserWindow.Config.Url = "http://localhost:22022/index.html" cef.BrowserWindow.Config.IconFS = "resources/icon.png" - cef.BrowserWindow.SetViewFrameBrowserInit(func(event *cef.BrowserEvent, window *cef.ViewsFrameworkBrowserWindow) { + cef.BrowserWindow.SetViewFrameBrowserInit(func(event *cef.BrowserEvent, window cef.IViewsFrameworkBrowserWindow) { fmt.Println("cef.BrowserWindow.SetViewFrameBrowserInit", window) fmt.Printf("%+v\n", window) event.SetOnBeforeContextMenu(func(sender lcl.IObject, browser *cef.ICefBrowser, frame *cef.ICefFrame, params *cef.ICefContextMenuParams, model *cef.ICefMenuModel) { diff --git a/example/mini-browser/src/min-browser.go b/example/mini-browser/src/min-browser.go index 402e6eb..5020375 100644 --- a/example/mini-browser/src/min-browser.go +++ b/example/mini-browser/src/min-browser.go @@ -142,7 +142,7 @@ func AppBrowserInit() { browserWindow.SetWidth(800) browserWindow.SetHeight(600) browserWindow.SetShowInTaskBar() - browserWindow.EnableDefaultClose() + browserWindow.EnableDefaultCloseEvent() browserWindow.Chromium().SetOnTitleChange(func(sender lcl.IObject, browser *cef.ICefBrowser, title string) { fmt.Println(wp.Title, title) }) @@ -180,13 +180,13 @@ func AppBrowserInit() { }) //主窗口初始化回调函数 - cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow *cef.LCLBrowserWindow) { + cef.BrowserWindow.SetBrowserInit(func(event *cef.BrowserEvent, browserWindow cef.ILCLBrowserWindow) { lcl.Application.SetOnMinimize(func(sender lcl.IObject) { fmt.Println("minimize") }) fmt.Println("主窗口初始化回调函数") lcl.Application.Icon().LoadFromFSFile("resources/icon.ico") //设置应用图标 - browserWindow.SetCaption("这里设置应用标题") + browserWindow.SetTitle("这里设置应用标题") //browserWindow.EnableTransparent(100) //窗口透明 //设置窗口样式,无标题 ,最大化按钮等 //browserWindow.SetBorderStyle(types.BsSingle) @@ -200,16 +200,16 @@ func AppBrowserInit() { //browserWindow.Window.Constraints().SetMinWidth(300) //browserWindow.Window.Constraints().SetMaxWidth(1600) //browserWindow.Window.Constraints().SetMaxHeight(900) - browserWindow.Constraints().SetOnChange(func(sender lcl.IObject) { + browserWindow.BrowserWindow().Constraints().SetOnChange(func(sender lcl.IObject) { fmt.Println("browserWindow SetOnChange") }) //添加事件,add不会覆盖默认的事件 set会覆盖默认的事件 - browserWindow.AddOnClose(func(sender lcl.IObject, action *types.TCloseAction) bool { + browserWindow.BrowserWindow().AddOnClose(func(sender lcl.IObject, action *types.TCloseAction) bool { fmt.Println("添加onclose事件") return false }) //窗口大小改变后触发 - browserWindow.AddOnResize(func(sender lcl.IObject) bool { + browserWindow.BrowserWindow().AddOnResize(func(sender lcl.IObject) bool { //Browser是在chromium加载完之后创建, 窗口创建时该对象还不存在 if browserWindow.Browser() != nil { var target = &cef.EmitTarget{ @@ -217,10 +217,10 @@ func AppBrowserInit() { FrameId: browserWindow.Browser().MainFrame().Id, } var argumentList = ipc.NewArgumentList() - argumentList.SetInt32(0, browserWindow.Left()) - argumentList.SetInt32(1, browserWindow.Top()) - argumentList.SetInt32(2, browserWindow.Width()) - argumentList.SetInt32(3, browserWindow.Height()) + argumentList.SetInt32(0, browserWindow.BrowserWindow().Left()) + argumentList.SetInt32(1, browserWindow.BrowserWindow().Top()) + argumentList.SetInt32(2, browserWindow.BrowserWindow().Width()) + argumentList.SetInt32(3, browserWindow.BrowserWindow().Height()) browserWindow.Chromium().Emit("window-resize", argumentList, target) browserWindow.Chromium().EmitAndCallback("window-resize", argumentList, target, func(context ipc.IIPCContext) { fmt.Println("EmitAndCallback AddOnResize") @@ -232,7 +232,7 @@ func AppBrowserInit() { return false }) //windows下可以使用这个函数,实时触发 - browserWindow.SetOnConstrainedResize(func(sender lcl.IObject, minWidth, minHeight, maxWidth, maxHeight *int32) { + browserWindow.BrowserWindow().SetOnConstrainedResize(func(sender lcl.IObject, minWidth, minHeight, maxWidth, maxHeight *int32) { //Browser是在chromium加载完之后创建, 窗口创建时该对象还不存在 if browserWindow.Browser() != nil { var target = &cef.EmitTarget{ @@ -240,10 +240,10 @@ func AppBrowserInit() { FrameId: browserWindow.Browser().MainFrame().Id, } var argumentList = ipc.NewArgumentList() - argumentList.SetInt32(0, browserWindow.Left()) - argumentList.SetInt32(1, browserWindow.Top()) - argumentList.SetInt32(2, browserWindow.Width()) - argumentList.SetInt32(3, browserWindow.Height()) + argumentList.SetInt32(0, browserWindow.BrowserWindow().Left()) + argumentList.SetInt32(1, browserWindow.BrowserWindow().Top()) + argumentList.SetInt32(2, browserWindow.BrowserWindow().Width()) + argumentList.SetInt32(3, browserWindow.BrowserWindow().Height()) browserWindow.Chromium().Emit("window-resize", argumentList, target) //使用EmitAndReturn函数会锁死 // browserWindow.Chromium.EmitAndCallback("window-resize", argumentList, target, func(context cef.IIPCContext) { @@ -252,11 +252,11 @@ func AppBrowserInit() { } }) //自定义browser窗体 - addressBar(browserWindow) + addressBar(browserWindow.BrowserWindow()) //下载文件 //linux系统弹出保存对话框不启作用 //自己调用系统的保存对话框获得保存路径 - dlSave := lcl.NewSaveDialog(browserWindow) + dlSave := lcl.NewSaveDialog(browserWindow.BrowserWindow()) dlSave.SetTitle("保存对话框标题") event.SetOnBeforeDownload(func(sender lcl.IObject, browser *cef.ICefBrowser, beforeDownloadItem *cef.DownloadItem, suggestedName string, callback *cef.ICefBeforeDownloadCallback) { fmt.Println("OnBeforeDownload:", beforeDownloadItem, suggestedName) @@ -380,13 +380,13 @@ func AppBrowserInit() { }) }) //添加子窗口初始化 - cef.BrowserWindow.SetBrowserInitAfter(func(browserWindow *cef.LCLBrowserWindow) { + cef.BrowserWindow.SetBrowserInitAfter(func(browserWindow cef.ILCLBrowserWindow) { //在这里创建 一些子窗口 子组件 等 //托盘 if common.IsWindows() { - cefTray(browserWindow) + cefTray(browserWindow.BrowserWindow()) } else { - tray(browserWindow) + tray(browserWindow.BrowserWindow()) } }) } -- GitLab