Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
energye
energy
提交
43d5f961
energy
项目概览
energye
/
energy
通知
13
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
energy
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
43d5f961
编写于
1月 06, 2023
作者:
yanghye
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v2.2.1 Fixed Chinese input and gtk3 issues for linux packaging
上级
0119f518
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
97 addition
and
75 deletion
+97
-75
cef/cef-browser-config.go
cef/cef-browser-config.go
+12
-12
cef/cef-browser-window.go
cef/cef-browser-window.go
+4
-4
cef/cef-events-callback.go
cef/cef-events-callback.go
+1
-2
cef/cef-lcl-browser-window.go
cef/cef-lcl-browser-window.go
+4
-0
cef/cef-views-framework-browser-window.go
cef/cef-views-framework-browser-window.go
+44
-34
cef/window.go
cef/window.go
+1
-0
example/browser-control/src/main-browser-window.go
example/browser-control/src/main-browser-window.go
+3
-3
example/browser-linux/linux.go
example/browser-linux/linux.go
+8
-1
example/mini-browser/src/min-browser.go
example/mini-browser/src/min-browser.go
+20
-19
未找到文件。
cef/cef-browser-config.go
浏览文件 @
43d5f961
...
...
@@ -12,17 +12,17 @@ import (
"github.com/energye/energy/common"
)
type
viewsFrameBrowserWindowOnEventCallback
func
(
event
*
BrowserEvent
,
window
IViewsFrameworkBrowserWindow
)
type
browserWindowOnEventCallback
func
(
event
*
BrowserEvent
,
window
I
LCL
BrowserWindow
)
type
browserWindowAfterOnEventCallback
func
(
window
I
LCL
BrowserWindow
)
//
type viewsFrameBrowserWindowOnEventCallback func(event *BrowserEvent, window IViewsFrameworkBrowserWindow)
type
browserWindowOnEventCallback
func
(
event
*
BrowserEvent
,
window
IBrowserWindow
)
type
browserWindowAfterOnEventCallback
func
(
window
IBrowserWindow
)
//创建主窗口指定的一些快捷配置属性
type
browserConfig
struct
{
WindowProperty
chromiumConfig
*
tCefChromiumConfig
//主窗体浏览器配置
viewsFrameBrowserWindowOnEventCallback
viewsFrameBrowserWindowOnEventCallback
//主窗口初始化回调 - 基于CEF views framework窗口
browserWindowOnEventCallback
browserWindowOnEventCallback
//主窗口初始化回调 - 基于LCL窗口
browserWindowAfterOnEventCallback
browserWindowAfterOnEventCallback
//主窗口初始化之后回调
chromiumConfig
*
tCefChromiumConfig
//主窗体浏览器配置
//
viewsFrameBrowserWindowOnEventCallback viewsFrameBrowserWindowOnEventCallback //主窗口初始化回调 - 基于CEF views framework窗口
browserWindowOnEventCallback
browserWindowOnEventCallback
//主窗口初始化回调 - 基于LCL窗口
browserWindowAfterOnEventCallback
browserWindowAfterOnEventCallback
//主窗口初始化之后回调
}
//设置chromium配置
...
...
@@ -42,11 +42,11 @@ func (m *browserConfig) ChromiumConfig() *tCefChromiumConfig {
//主窗口初始化回调 - 基于CEF views framework窗口
//
//该回调函数和基于LCL窗口回调是互斥的,默认情况只有一个会被回调
func
(
m
*
browserConfig
)
setViewsFrameBrowserWindowOnEventCallback
(
fn
viewsFrameBrowserWindowOnEventCallback
)
{
if
fn
!=
nil
&&
common
.
Args
.
IsMain
()
{
m
.
viewsFrameBrowserWindowOnEventCallback
=
fn
}
}
//
func (m *browserConfig) setViewsFrameBrowserWindowOnEventCallback(fn viewsFrameBrowserWindowOnEventCallback) {
//
if fn != nil && common.Args.IsMain() {
// //
m.viewsFrameBrowserWindowOnEventCallback = fn
//
}
//
}
//主窗口初始化回调 - 基于LCL窗口
//
...
...
cef/cef-browser-window.go
浏览文件 @
43d5f961
...
...
@@ -190,9 +190,9 @@ func (m *browser) MainWindow() *LCLBrowserWindow {
// event 浏览器事件
//
// views framework window 窗口信息对象
func
(
m
*
browser
)
SetViewFrameBrowserInit
(
fn
viewsFrameBrowserWindowOnEventCallback
)
{
m
.
Config
.
setViewsFrameBrowserWindowOnEventCallback
(
fn
)
}
//
func (m *browser) SetViewFrameBrowserInit(fn viewsFrameBrowserWindowOnEventCallback) {
//
m.Config.setViewsFrameBrowserWindowOnEventCallback(fn)
//
}
// 基于LCL窗口 - 主窗口和chromium初始化时回调
//
...
...
@@ -242,7 +242,7 @@ func (m *browser) GetNextWindowNum() int32 {
return
m
.
windowSerial
}
func
(
m
*
browser
)
createNextPopupWindow
()
{
func
(
m
*
browser
)
createNext
LCL
PopupWindow
()
{
m
.
popupWindow
=
NewLCLWindow
(
&
BrowserWindow
.
Config
.
WindowProperty
,
m
.
MainWindow
())
m
.
popupWindow
.
AsLCLBrowserWindow
()
.
BrowserWindow
()
.
defaultWindowCloseEvent
()
}
...
...
cef/cef-events-callback.go
浏览文件 @
43d5f961
...
...
@@ -38,10 +38,9 @@ func chromiumOnBeforeBrowser(browser *ICefBrowser, frame *ICefFrame) {
}
BrowserWindow
.
setOrIncNextWindowNum
(
browser
.
Identifier
()
+
1
)
if
IsMessageLoop
{
}
else
{
QueueAsyncCall
(
func
(
id
int
)
{
BrowserWindow
.
createNextPopupWindow
()
BrowserWindow
.
createNext
LCL
PopupWindow
()
})
}
}
...
...
cef/cef-lcl-browser-window.go
浏览文件 @
43d5f961
...
...
@@ -295,6 +295,10 @@ func (m *LCLBrowserWindow) ChromiumCreate(config *tCefChromiumConfig, defaultUrl
})
}
func
(
m
*
LCLBrowserWindow
)
WindowProperty
()
*
WindowProperty
{
return
m
.
windowProperty
}
func
(
m
*
LCLBrowserWindow
)
putChromiumWindowInfo
()
{
BrowserWindow
.
putWindowInfo
(
m
.
windowId
,
m
)
}
...
...
cef/cef-views-framework-browser-window.go
浏览文件 @
43d5f961
...
...
@@ -38,7 +38,7 @@ type ViewsFrameworkBrowserWindow struct {
}
//创建 ViewsFrameworkBrowserWindow 窗口
func
NewViewsFrameworkBrowserWindow
(
chromiumConfig
*
tCefChromiumConfig
,
windowProperty
*
WindowProperty
)
*
ViewsFrameworkBrowserWindow
{
func
NewViewsFrameworkBrowserWindow
(
chromiumConfig
*
tCefChromiumConfig
,
windowProperty
*
WindowProperty
,
browserWindowOnEventCallback
browserWindowOnEventCallback
)
*
ViewsFrameworkBrowserWindow
{
if
chromiumConfig
==
nil
{
chromiumConfig
=
BrowserWindow
.
Config
.
ChromiumConfig
()
}
...
...
@@ -60,11 +60,14 @@ func NewViewsFrameworkBrowserWindow(chromiumConfig *tCefChromiumConfig, windowPr
window
.
CenterWindow
(
NewCefSize
(
windowProperty
.
Width
,
windowProperty
.
Height
))
}
if
windowProperty
.
IconFS
!=
""
{
m
.
windowComponent
.
SetWindowAppIconFS
(
1
,
windowProperty
.
IconFS
)
_
=
m
.
windowComponent
.
SetWindowAppIconFS
(
1
,
windowProperty
.
IconFS
)
}
else
if
windowProperty
.
Icon
!=
""
{
m
.
windowComponent
.
SetWindowAppIcon
(
1
,
windowProperty
.
Icon
)
_
=
m
.
windowComponent
.
SetWindowAppIcon
(
1
,
windowProperty
.
Icon
)
}
m
.
browserViewComponent
.
RequestFocus
()
if
browserWindowOnEventCallback
!=
nil
{
browserWindowOnEventCallback
(
BrowserWindow
.
browserEvent
,
m
)
}
m
.
windowComponent
.
Show
()
}
})
...
...
@@ -98,18 +101,16 @@ func (m *browser) appContextInitialized(app *TCEFApplication) {
return
}
app
.
SetOnContextInitialized
(
func
()
{
vFrameBrowserWindow
:=
NewViewsFrameworkBrowserWindow
(
m
.
Config
.
ChromiumConfig
(),
&
m
.
Config
.
WindowProperty
)
//BrowserWindow.mainBrowserWindow.windowId = BrowserWindow.GetNextWindowNum()
//BrowserWindow.mainBrowserWindow.putChromiumWindowInfo()
vFrameBrowserWindow
:=
NewViewsFrameworkBrowserWindow
(
m
.
Config
.
ChromiumConfig
(),
&
m
.
Config
.
WindowProperty
,
m
.
Config
.
browserWindowOnEventCallback
)
vFrameBrowserWindow
.
SetWindowType
(
consts
.
WT_POPUP_SUB_BROWSER
)
vFrameBrowserWindow
.
windowId
=
BrowserWindow
.
GetNextWindowNum
()
vFrameBrowserWindow
.
putChromiumWindowInfo
()
vFrameBrowserWindow
.
registerPopupEvent
()
vFrameBrowserWindow
.
registerDefaultEvent
()
vFrameBrowserWindow
.
windowComponent
.
SetOnCanClose
(
func
(
sender
lcl
.
IObject
,
window
*
ICefWindow
,
aResult
*
bool
)
{
*
aResult
=
true
app
.
QuitMessageLoop
()
})
if
m
.
Config
.
viewsFrameBrowserWindowOnEventCallback
!=
nil
{
m
.
Config
.
viewsFrameBrowserWindowOnEventCallback
(
m
.
browserEvent
,
vFrameBrowserWindow
)
}
vFrameBrowserWindow
.
windowComponent
.
CreateTopLevelWindow
()
})
}
...
...
@@ -129,34 +130,35 @@ func (m *ViewsFrameworkBrowserWindow) registerPopupEvent() {
return
true
}
fmt
.
Println
(
"BrowserWindow-TargetUrl:"
,
beforePopupInfo
.
TargetUrl
,
"IsMessageLoop:"
,
consts
.
IsMessageLoop
)
wp
:=
&
WindowProperty
{
Title
:
BrowserWindow
.
Config
.
WindowProperty
.
Title
,
Url
:
beforePopupInfo
.
TargetUrl
,
CanMinimize
:
BrowserWindow
.
Config
.
WindowProperty
.
CanMinimize
,
CanMaximize
:
BrowserWindow
.
Config
.
WindowProperty
.
CanMaximize
,
CanResize
:
BrowserWindow
.
Config
.
WindowProperty
.
CanResize
,
CanClose
:
BrowserWindow
.
Config
.
WindowProperty
.
CanClose
,
CenterWindow
:
BrowserWindow
.
Config
.
WindowProperty
.
CenterWindow
,
IsShowModel
:
BrowserWindow
.
Config
.
WindowProperty
.
IsShowModel
,
WindowState
:
BrowserWindow
.
Config
.
WindowProperty
.
WindowState
,
Icon
:
BrowserWindow
.
Config
.
WindowProperty
.
Icon
,
IconFS
:
BrowserWindow
.
Config
.
WindowProperty
.
IconFS
,
X
:
BrowserWindow
.
Config
.
WindowProperty
.
X
,
Y
:
BrowserWindow
.
Config
.
WindowProperty
.
Y
,
Width
:
BrowserWindow
.
Config
.
WindowProperty
.
Width
,
Height
:
BrowserWindow
.
Config
.
WindowProperty
.
Height
,
}
var
vfbw
=
NewViewsFrameworkBrowserWindow
(
BrowserWindow
.
Config
.
ChromiumConfig
(),
wp
,
nil
)
var
result
=
false
if
bwEvent
.
onBeforePopup
!=
nil
{
result
=
bwEvent
.
onBeforePopup
(
sender
,
browser
,
frame
,
beforePopupInfo
,
BrowserWindow
.
popupWindo
w
,
noJavascriptAccess
)
result
=
bwEvent
.
onBeforePopup
(
sender
,
browser
,
frame
,
beforePopupInfo
,
vfb
w
,
noJavascriptAccess
)
}
if
!
result
{
wp
:=
&
WindowProperty
{
Title
:
BrowserWindow
.
Config
.
WindowProperty
.
Title
,
Url
:
beforePopupInfo
.
TargetUrl
,
CanMinimize
:
BrowserWindow
.
Config
.
WindowProperty
.
CanMinimize
,
CanMaximize
:
BrowserWindow
.
Config
.
WindowProperty
.
CanMaximize
,
CanResize
:
BrowserWindow
.
Config
.
WindowProperty
.
CanResize
,
CanClose
:
BrowserWindow
.
Config
.
WindowProperty
.
CanClose
,
CenterWindow
:
BrowserWindow
.
Config
.
WindowProperty
.
CenterWindow
,
IsShowModel
:
BrowserWindow
.
Config
.
WindowProperty
.
IsShowModel
,
WindowState
:
BrowserWindow
.
Config
.
WindowProperty
.
WindowState
,
Icon
:
BrowserWindow
.
Config
.
WindowProperty
.
Icon
,
IconFS
:
BrowserWindow
.
Config
.
WindowProperty
.
IconFS
,
X
:
BrowserWindow
.
Config
.
WindowProperty
.
X
,
Y
:
BrowserWindow
.
Config
.
WindowProperty
.
Y
,
Width
:
BrowserWindow
.
Config
.
WindowProperty
.
Width
,
Height
:
BrowserWindow
.
Config
.
WindowProperty
.
Height
,
}
vFrameBrowserWindow
:=
NewViewsFrameworkBrowserWindow
(
BrowserWindow
.
Config
.
ChromiumConfig
(),
wp
)
//BrowserWindow.mainBrowserWindow.windowId = BrowserWindow.GetNextWindowNum()
//BrowserWindow.mainBrowserWindow.putChromiumWindowInfo()
vFrameBrowserWindow
.
registerPopupEvent
()
vFrameBrowserWindow
.
registerDefaultEvent
()
vFrameBrowserWindow
.
windowComponent
.
CreateTopLevelWindow
()
vfbw
.
SetWindowType
(
consts
.
WT_POPUP_SUB_BROWSER
)
vfbw
.
windowId
=
BrowserWindow
.
GetNextWindowNum
()
vfbw
.
putChromiumWindowInfo
()
vfbw
.
registerPopupEvent
()
vfbw
.
registerDefaultEvent
()
vfbw
.
windowComponent
.
CreateTopLevelWindow
()
result
=
true
}
return
result
...
...
@@ -262,6 +264,14 @@ func (m *ViewsFrameworkBrowserWindow) registerDefaultEvent() {
})
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
WindowProperty
()
*
WindowProperty
{
return
m
.
windowProperty
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
putChromiumWindowInfo
()
{
BrowserWindow
.
putWindowInfo
(
m
.
windowId
,
m
)
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
BrowserWindow
()
*
ViewsFrameworkBrowserWindow
{
return
m
}
...
...
@@ -275,7 +285,7 @@ func (m *ViewsFrameworkBrowserWindow) AsLCLBrowserWindow() ILCLBrowserWindow {
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
SetTitle
(
title
string
)
{
m
.
Window
Component
()
.
SetTitle
(
title
)
m
.
Window
Property
()
.
Title
=
title
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
getAuxTools
()
*
auxTools
{
...
...
cef/window.go
浏览文件 @
43d5f961
...
...
@@ -75,6 +75,7 @@ type IBrowserWindow interface {
SetTitle
(
title
string
)
IsViewsFramework
()
bool
IsLCL
()
bool
WindowProperty
()
*
WindowProperty
}
type
ILCLBrowserWindow
interface
{
...
...
example/browser-control/src/main-browser-window.go
浏览文件 @
43d5f961
...
...
@@ -28,11 +28,11 @@ func MainBrowserWindow() {
config
.
SetEnableDevTools
(
true
)
cef
.
BrowserWindow
.
Config
.
SetChromiumConfig
(
config
)
//创建窗口时的回调函数 对浏览器事件设置,和窗口属性组件等创建和修改
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
cef
.
I
LCL
BrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
cef
.
IBrowserWindow
)
{
//设置应用图标 这里加载的图标是内置到执行程序里的资源文件
lcl
.
Application
.
Icon
()
.
LoadFromFSFile
(
"resources/icon.ico"
)
//在窗体初始化时创建窗口内的组件
back
,
forward
,
stop
,
refresh
,
progressLabel
,
addr
:=
controlUI
(
browserWindow
.
BrowserWindow
())
back
,
forward
,
stop
,
refresh
,
progressLabel
,
addr
:=
controlUI
(
browserWindow
.
AsLCLBrowserWindow
()
.
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
.
I
LCL
BrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInitAfter
(
func
(
browserWindow
cef
.
IBrowserWindow
)
{
fmt
.
Println
(
"SetBrowserInitAfter"
)
})
}
...
...
example/browser-linux/linux.go
浏览文件 @
43d5f961
...
...
@@ -23,7 +23,8 @@ 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
.
IViewsFrameworkBrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
window
cef
.
IBrowserWindow
)
{
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
)
{
...
...
@@ -32,6 +33,12 @@ func main() {
event
.
SetOnContextMenuCommand
(
func
(
sender
lcl
.
IObject
,
browser
*
cef
.
ICefBrowser
,
frame
*
cef
.
ICefFrame
,
params
*
cef
.
ICefContextMenuParams
,
commandId
consts
.
MenuId
,
eventFlags
uint32
,
result
*
bool
)
{
fmt
.
Println
(
"SetOnContextMenuCommand"
,
commandId
)
})
event
.
SetOnBeforePopup
(
func
(
sender
lcl
.
IObject
,
browser
*
cef
.
ICefBrowser
,
frame
*
cef
.
ICefFrame
,
beforePopupInfo
*
cef
.
BeforePopupInfo
,
popupWindow
cef
.
IBrowserWindow
,
noJavascriptAccess
*
bool
)
bool
{
fmt
.
Println
(
"IsViewsFramework:"
,
popupWindow
.
IsViewsFramework
())
popupWindow
.
WindowProperty
()
.
Url
=
"https://www.csdn.net/"
popupWindow
.
SetTitle
(
"修改了标题"
)
return
false
})
})
//在主进程启动成功之后执行
//在这里启动内置http服务
...
...
example/mini-browser/src/min-browser.go
浏览文件 @
43d5f961
...
...
@@ -180,7 +180,7 @@ func AppBrowserInit() {
})
//主窗口初始化回调函数
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
cef
.
I
LCL
BrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
cef
.
IBrowserWindow
)
{
lcl
.
Application
.
SetOnMinimize
(
func
(
sender
lcl
.
IObject
)
{
fmt
.
Println
(
"minimize"
)
})
...
...
@@ -200,16 +200,17 @@ func AppBrowserInit() {
//browserWindow.Window.Constraints().SetMinWidth(300)
//browserWindow.Window.Constraints().SetMaxWidth(1600)
//browserWindow.Window.Constraints().SetMaxHeight(900)
browserWindow
.
BrowserWindow
()
.
Constraints
()
.
SetOnChange
(
func
(
sender
lcl
.
IObject
)
{
window
:=
browserWindow
.
AsLCLBrowserWindow
()
window
.
BrowserWindow
()
.
Constraints
()
.
SetOnChange
(
func
(
sender
lcl
.
IObject
)
{
fmt
.
Println
(
"browserWindow SetOnChange"
)
})
//添加事件,add不会覆盖默认的事件 set会覆盖默认的事件
browserW
indow
.
BrowserWindow
()
.
AddOnClose
(
func
(
sender
lcl
.
IObject
,
action
*
types
.
TCloseAction
)
bool
{
w
indow
.
BrowserWindow
()
.
AddOnClose
(
func
(
sender
lcl
.
IObject
,
action
*
types
.
TCloseAction
)
bool
{
fmt
.
Println
(
"添加onclose事件"
)
return
false
})
//窗口大小改变后触发
browserW
indow
.
BrowserWindow
()
.
AddOnResize
(
func
(
sender
lcl
.
IObject
)
bool
{
w
indow
.
BrowserWindow
()
.
AddOnResize
(
func
(
sender
lcl
.
IObject
)
bool
{
//Browser是在chromium加载完之后创建, 窗口创建时该对象还不存在
if
browserWindow
.
Browser
()
!=
nil
{
var
target
=
&
cef
.
EmitTarget
{
...
...
@@ -217,10 +218,10 @@ func AppBrowserInit() {
FrameId
:
browserWindow
.
Browser
()
.
MainFrame
()
.
Id
,
}
var
argumentList
=
ipc
.
NewArgumentList
()
argumentList
.
SetInt32
(
0
,
browserW
indow
.
BrowserWindow
()
.
Left
())
argumentList
.
SetInt32
(
1
,
browserW
indow
.
BrowserWindow
()
.
Top
())
argumentList
.
SetInt32
(
2
,
browserW
indow
.
BrowserWindow
()
.
Width
())
argumentList
.
SetInt32
(
3
,
browserW
indow
.
BrowserWindow
()
.
Height
())
argumentList
.
SetInt32
(
0
,
w
indow
.
BrowserWindow
()
.
Left
())
argumentList
.
SetInt32
(
1
,
w
indow
.
BrowserWindow
()
.
Top
())
argumentList
.
SetInt32
(
2
,
w
indow
.
BrowserWindow
()
.
Width
())
argumentList
.
SetInt32
(
3
,
w
indow
.
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 +233,7 @@ func AppBrowserInit() {
return
false
})
//windows下可以使用这个函数,实时触发
browserW
indow
.
BrowserWindow
()
.
SetOnConstrainedResize
(
func
(
sender
lcl
.
IObject
,
minWidth
,
minHeight
,
maxWidth
,
maxHeight
*
int32
)
{
w
indow
.
BrowserWindow
()
.
SetOnConstrainedResize
(
func
(
sender
lcl
.
IObject
,
minWidth
,
minHeight
,
maxWidth
,
maxHeight
*
int32
)
{
//Browser是在chromium加载完之后创建, 窗口创建时该对象还不存在
if
browserWindow
.
Browser
()
!=
nil
{
var
target
=
&
cef
.
EmitTarget
{
...
...
@@ -240,10 +241,10 @@ func AppBrowserInit() {
FrameId
:
browserWindow
.
Browser
()
.
MainFrame
()
.
Id
,
}
var
argumentList
=
ipc
.
NewArgumentList
()
argumentList
.
SetInt32
(
0
,
browserW
indow
.
BrowserWindow
()
.
Left
())
argumentList
.
SetInt32
(
1
,
browserW
indow
.
BrowserWindow
()
.
Top
())
argumentList
.
SetInt32
(
2
,
browserW
indow
.
BrowserWindow
()
.
Width
())
argumentList
.
SetInt32
(
3
,
browserW
indow
.
BrowserWindow
()
.
Height
())
argumentList
.
SetInt32
(
0
,
w
indow
.
BrowserWindow
()
.
Left
())
argumentList
.
SetInt32
(
1
,
w
indow
.
BrowserWindow
()
.
Top
())
argumentList
.
SetInt32
(
2
,
w
indow
.
BrowserWindow
()
.
Width
())
argumentList
.
SetInt32
(
3
,
w
indow
.
BrowserWindow
()
.
Height
())
browserWindow
.
Chromium
()
.
Emit
(
"window-resize"
,
argumentList
,
target
)
//使用EmitAndReturn函数会锁死
// browserWindow.Chromium.EmitAndCallback("window-resize", argumentList, target, func(context cef.IIPCContext) {
...
...
@@ -252,11 +253,11 @@ func AppBrowserInit() {
}
})
//自定义browser窗体
addressBar
(
browserW
indow
.
BrowserWindow
())
addressBar
(
w
indow
.
BrowserWindow
())
//下载文件
//linux系统弹出保存对话框不启作用
//自己调用系统的保存对话框获得保存路径
dlSave
:=
lcl
.
NewSaveDialog
(
browserW
indow
.
BrowserWindow
())
dlSave
:=
lcl
.
NewSaveDialog
(
w
indow
.
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
)
...
...
@@ -281,7 +282,7 @@ func AppBrowserInit() {
fmt
.
Println
(
"OnFindResult:"
,
browser
.
Identifier
(),
identifier
,
count
,
selectionRect
,
activeMatchOrdinal
,
finalUpdate
)
})
event
.
SetOnBeforePopup
(
func
(
sender
lcl
.
IObject
,
browser
*
cef
.
ICefBrowser
,
frame
*
cef
.
ICefFrame
,
beforePopupInfo
*
cef
.
BeforePopupInfo
,
popupWindow
cef
.
IBrowserWindow
,
noJavascriptAccess
*
bool
)
bool
{
fmt
.
Println
(
"OnBeforePopup: "
+
beforePopupInfo
.
TargetUrl
)
fmt
.
Println
(
"OnBeforePopup: "
+
beforePopupInfo
.
TargetUrl
,
"isLCL:"
,
popupWindow
.
IsLCL
()
)
window
:=
popupWindow
.
AsLCLBrowserWindow
()
.
BrowserWindow
()
window
.
SetCaption
(
"改变了标题 - "
+
beforePopupInfo
.
TargetUrl
)
//popupWindow.Form.SetBorderStyle(types.BsNone)
...
...
@@ -381,13 +382,13 @@ func AppBrowserInit() {
})
})
//添加子窗口初始化
cef
.
BrowserWindow
.
SetBrowserInitAfter
(
func
(
browserWindow
cef
.
I
LCL
BrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInitAfter
(
func
(
browserWindow
cef
.
IBrowserWindow
)
{
//在这里创建 一些子窗口 子组件 等
//托盘
if
common
.
IsWindows
()
{
cefTray
(
browserWindow
.
BrowserWindow
())
cefTray
(
browserWindow
.
AsLCLBrowserWindow
()
.
BrowserWindow
())
}
else
{
tray
(
browserWindow
.
BrowserWindow
())
tray
(
browserWindow
.
AsLCLBrowserWindow
()
.
BrowserWindow
())
}
})
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录