提交 c34bdf5b 编写于 作者: yanghye's avatar yanghye

v2.2.12 Fixed Chinese input and gtk3 issues for linux packagin

上级 78eca831
......@@ -424,12 +424,26 @@ func (m *BrowserEvent) SetOnTitleChange(event ChromiumEventOnTitleChange) {
}
// BrowserEvent.SetOnRenderCompMsg
func (m *BrowserEvent) SetOnRenderCompMsg(event ChromiumEventOnRenderCompMsg) {
func (m *BrowserEvent) SetOnRenderCompMsg(event ChromiumEventOnCompMsg) {
if Args.IsMain() {
m.chromium.SetOnRenderCompMsg(event)
}
}
// BrowserEvent.SetOnWidgetCompMsg
func (m *BrowserEvent) SetOnWidgetCompMsg(event ChromiumEventOnCompMsg) {
if Args.IsMain() {
m.chromium.SetOnWidgetCompMsg(event)
}
}
// BrowserEvent.SetOnBrowserCompMsg
func (m *BrowserEvent) SetOnBrowserCompMsg(event ChromiumEventOnCompMsg) {
if Args.IsMain() {
m.chromium.SetOnBrowserCompMsg(event)
}
}
// BrowserEvent.SetOnRenderProcessTerminated
func (m *BrowserEvent) SetOnRenderProcessTerminated(event ChromiumEventOnRenderProcessTerminated) {
if Args.IsMain() {
......@@ -580,14 +594,29 @@ func (m *BrowserEvent) SetOnBeforePopup(event ChromiumEventOnBeforePopupForWindo
}
// BrowserEvent.SetOnOpenUrlFromTab
func (m *BrowserEvent) SetOnOpenUrlFromTab(event ChromiumEventOnOpenUrlFromTab) {
//func (m *BrowserEvent) SetOnOpenUrlFromTab(event ChromiumEventOnOpenUrlFromTab) {
// if Args.IsMain() {
// m.chromium.SetOnOpenUrlFromTab(event)
// }
//}
// BrowserEvent.SetOnFindResult
func (m *BrowserEvent) SetOnFindResult(event ChromiumEventOnFindResult) {
if Args.IsMain() {
m.chromium.SetOnOpenUrlFromTab(event)
m.chromium.SetOnFindResult(event)
}
}
func (m *BrowserEvent) SetOnFindResult(event ChromiumEventOnFindResult) {
// BrowserEvent.SetOnDragEnter
func (m *BrowserEvent) SetOnDragEnter(event ChromiumEventOnDragEnter) {
if Args.IsMain() {
m.chromium.SetOnFindResult(event)
m.chromium.SetOnDragEnter(event)
}
}
// BrowserEvent.SetOnDraggableRegionsChanged
func (m *BrowserEvent) SetOnDraggableRegionsChanged(event ChromiumEventOnDraggableRegionsChanged) {
if Args.IsMain() {
m.chromium.SetOnDraggableRegionsChanged(event)
}
}
......@@ -36,7 +36,9 @@ type IChromiumEvent interface {
SetOnFullScreenModeChange(fn ChromiumEventOnFullScreenModeChange)
SetOnKeyEvent(fn ChromiumEventOnKeyEvent)
SetOnTitleChange(fn ChromiumEventOnTitleChange)
SetOnRenderCompMsg(fn ChromiumEventOnRenderCompMsg)
SetOnRenderCompMsg(fn ChromiumEventOnCompMsg)
SetOnWidgetCompMsg(fn ChromiumEventOnCompMsg)
SetOnBrowserCompMsg(fn ChromiumEventOnCompMsg)
SetOnRenderProcessTerminated(fn ChromiumEventOnRenderProcessTerminated)
SetOnRenderViewReady(fn ChromiumEventOnCefBrowser)
SetOnScrollOffsetChanged(fn ChromiumEventOnScrollOffsetChanged)
......@@ -60,6 +62,8 @@ type IChromiumEvent interface {
SetOnMainFrameChanged(fn ChromiumEventOnMainFrameChanged)
SetOnBeforePopup(fn ChromiumEventOnBeforePopup)
SetOnOpenUrlFromTab(fn ChromiumEventOnOpenUrlFromTab)
SetOnDragEnter(fn ChromiumEventOnDragEnter)
SetOnDraggableRegionsChanged(fn ChromiumEventOnDraggableRegionsChanged)
}
// Event
......@@ -135,10 +139,18 @@ func (m *TCEFChromium) SetOnTitleChange(fn ChromiumEventOnTitleChange) {
_CEFChromium_SetOnTitleChange(m.Instance(), fn)
}
func (m *TCEFChromium) SetOnRenderCompMsg(fn ChromiumEventOnRenderCompMsg) {
func (m *TCEFChromium) SetOnRenderCompMsg(fn ChromiumEventOnCompMsg) {
_CEFChromium_SetOnRenderCompMsg(m.Instance(), fn)
}
func (m *TCEFChromium) SetOnWidgetCompMsg(fn ChromiumEventOnCompMsg) {
_CEFChromium_SetOnWidgetCompMsg(m.Instance(), fn)
}
func (m *TCEFChromium) SetOnBrowserCompMsg(fn ChromiumEventOnCompMsg) {
_CEFChromium_SetOnBrowserCompMsg(m.Instance(), fn)
}
func (m *TCEFChromium) SetOnRenderProcessTerminated(fn ChromiumEventOnRenderProcessTerminated) {
_CEFChromium_SetOnRenderProcessTerminated(m.Instance(), fn)
}
......@@ -241,29 +253,16 @@ func (m *TCEFChromium) SetOnOpenUrlFromTab(fn ChromiumEventOnOpenUrlFromTab) {
_CEFChromium_SetOnOpenUrlFromTab(m.Instance(), fn)
}
// --------TCEFChromium Event proc begin--------
func (m *TCEFChromium) SetOnDragEnter(fn ChromiumEventOnDragEnter) {
_CEFChromium_SetOnDragEnter(m.Instance(), fn)
}
// 解决事件重复
var chromiumOnEventIdMapping = map[string]uintptr{}
func chromiumOnEventNameToId(fn interface{}) uintptr {
return api.MakeEventDataPtr(fn)
//var eventId uintptr
//if independentEvent {
// eventId = api.MakeEventDataPtr(fn)
//} else {
// var (
// name = reflect.ValueOf(fn).Type().Name()
// ok bool
// )
// if eventId, ok = chromiumOnEventIdMapping[name]; !ok {
// eventId = api.MakeEventDataPtr(fn)
// chromiumOnEventIdMapping[name] = eventId
// }
//}
//return eventId
func (m *TCEFChromium) SetOnDraggableRegionsChanged(fn ChromiumEventOnDraggableRegionsChanged) {
_CEFChromium_SetOnDraggableRegionsChanged(m.Instance(), fn)
}
// --------TCEFChromium Event proc begin--------
func _CEFChromium_SetOnAfterCreated(instance uintptr, fn interface{}) {
Proc(internale_CEFChromium_SetOnAfterCreated).Call(instance, api.MakeEventDataPtr(fn))
}
......@@ -353,6 +352,16 @@ func _CEFChromium_SetOnRenderCompMsg(instance uintptr, fn interface{}) {
Proc(internale_CEFChromium_SetOnRenderCompMsg).Call(instance, api.MakeEventDataPtr(fn))
}
// TCEFChromium _CEFChromium_SetOnWidgetCompMsg
func _CEFChromium_SetOnWidgetCompMsg(instance uintptr, fn interface{}) {
Proc(internale_CEFChromium_SetOnWidgetCompMsg).Call(instance, api.MakeEventDataPtr(fn))
}
// TCEFChromium _CEFChromium_SetOnBrowserCompMsg
func _CEFChromium_SetOnBrowserCompMsg(instance uintptr, fn interface{}) {
Proc(internale_CEFChromium_SetOnBrowserCompMsg).Call(instance, api.MakeEventDataPtr(fn))
}
// TCEFChromium _CEFChromium_SetOnRenderProcessTerminated
func _CEFChromium_SetOnRenderProcessTerminated(instance uintptr, fn interface{}) {
Proc(internale_CEFChromium_SetOnRenderProcessTerminated).Call(instance, api.MakeEventDataPtr(fn))
......@@ -468,4 +477,14 @@ func _CEFChromium_SetOnOpenUrlFromTab(instance uintptr, fn interface{}) {
Proc(internale_CEFChromium_SetOnOpenUrlFromTab).Call(instance, api.MakeEventDataPtr(fn))
}
// TCEFChromium _CEFChromium_SetOnDragEnter
func _CEFChromium_SetOnDragEnter(instance uintptr, fn interface{}) {
Proc(internale_CEFChromium_SetOnDragEnter).Call(instance, api.MakeEventDataPtr(fn))
}
// TCEFChromium _CEFChromium_SetOnDraggableRegionsChanged
func _CEFChromium_SetOnDraggableRegionsChanged(instance uintptr, fn interface{}) {
Proc(internale_CEFChromium_SetOnDraggableRegionsChanged).Call(instance, api.MakeEventDataPtr(fn))
}
//--------TCEFChromium Event proc end--------
......@@ -33,7 +33,9 @@ type ChromiumEventOnTitleChange func(sender lcl.IObject, browser *ICefBrowser, t
// render
type ChromiumEventOnRenderProcessTerminated func(sender lcl.IObject, browser *ICefBrowser, status consts.TCefTerminationStatus)
type ChromiumEventOnRenderCompMsg func(sender lcl.IObject, message types.TMessage, aHandled bool)
// msg
type ChromiumEventOnCompMsg func(sender lcl.IObject, message types.TMessage, aHandled bool)
// Event CefBrowse
type ChromiumEventOnCefBrowser func(sender lcl.IObject, browser *ICefBrowser)
......@@ -114,6 +116,12 @@ type ChromiumEventOnBeforePopupForWindowInfo func(sender lcl.IObject, browser *I
// windowParent open url from tab
type ChromiumEventOnOpenUrlFromTab func(sender lcl.IObject, browser *ICefBrowser, frame *ICefFrame)
// drag
type ChromiumEventOnDragEnter func(sender lcl.IObject, browser *ICefBrowser, dragData *ICefDragData, mask consts.TCefDragOperations, result *bool)
// DraggableRegionsChanged css [-webkit-app-region: drag/no-drag]
type ChromiumEventOnDraggableRegionsChanged func(sender lcl.IObject, browser *ICefBrowser, frame *ICefFrame, regionsCount t.NativeUInt, regions *TCefDraggableRegions)
// window event
type TCloseEvent func(sender lcl.IObject, action *types.TCloseAction) bool
type TNotifyEvent func(sender lcl.IObject) bool
......
......@@ -261,9 +261,9 @@ func init() {
sender := getPtr(0)
browser := &ICefBrowser{browseId: int32(getVal(1)), chromium: sender}
fn.(ChromiumEventOnRenderProcessTerminated)(lcl.AsObject(sender), browser, TCefTerminationStatus(getVal(2)))
case ChromiumEventOnRenderCompMsg:
case ChromiumEventOnCompMsg:
message := *(*types.TMessage)(getPtr(1))
fn.(ChromiumEventOnRenderCompMsg)(lcl.AsObject(getVal(0)), message, api.GoBool(getVal(2)))
fn.(ChromiumEventOnCompMsg)(lcl.AsObject(getVal(0)), message, api.GoBool(getVal(2)))
case ChromiumEventOnCefBrowser:
sender := getPtr(0)
browser := &ICefBrowser{browseId: int32(getVal(1)), chromium: sender}
......@@ -507,7 +507,29 @@ func init() {
*result = fn.(ChromiumEventOnBeforePopup)(lcl.AsObject(sender), browser, frame, beforePInfo, client, noJavascriptAccess)
//windowParent open url from tab
case ChromiumEventOnOpenUrlFromTab:
//no impl
case ChromiumEventOnDragEnter:
sender := getPtr(0)
browser := &ICefBrowser{browseId: int32(getVal(1)), chromium: sender}
dragData := &ICefDragData{instance: getPtr(2)}
mask := TCefDragOperations(getVal(3))
result := (*bool)(getPtr(4))
fn.(ChromiumEventOnDragEnter)(lcl.AsObject(sender), browser, dragData, mask, result)
case ChromiumEventOnDraggableRegionsChanged:
sender := getPtr(0)
browser := &ICefBrowser{browseId: int32(getVal(1)), chromium: sender}
tempFrame := (*cefFrame)(getPtr(2))
frame := &ICefFrame{
Browser: browser,
Name: api.GoStr(tempFrame.Name),
Url: api.GoStr(tempFrame.Url),
Id: StrToInt64(api.GoStr(tempFrame.Identifier)),
}
regionsCount := t.NativeUInt(getVal(3))
//regionsPtr := getVal(4)
regions := NewCefDraggableRegions()
//regions.Append(NewCefDraggableRegion())
fn.(ChromiumEventOnDraggableRegionsChanged)(lcl.AsObject(sender), browser, frame, regionsCount, regions)
default:
return false
}
......
......@@ -12,6 +12,7 @@
package cef
import (
"fmt"
. "github.com/energye/energy/common"
"github.com/energye/energy/common/assetserve"
. "github.com/energye/energy/consts"
......@@ -171,6 +172,7 @@ func (m *tLCLTrayWindow) createTrayWindow() {
})
m.TForm.SetOnWndProc(func(msg *types.TMessage) {
m.TForm.InheritedWndProc(msg)
fmt.Println("msg", msg)
if msg.Msg == 6 && msg.WParam == 0 && msg.LParam == 0 {
QueueAsyncCall(func(id int) {
if m.isClosing {
......
......@@ -194,6 +194,8 @@ func init() {
dllimports.NewEnergyImport("CEFChromium_SetOnKeyEvent", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnTitleChange", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnRenderCompMsg", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnWidgetCompMsg", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnBrowserCompMsg", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnRenderProcessTerminated", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnRenderViewReady", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnScrollOffsetChanged", 0),
......@@ -217,6 +219,8 @@ func init() {
dllimports.NewEnergyImport("CEFChromium_SetOnMainFrameChanged", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnBeforePopup", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnOpenUrlFromTab", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnDragEnter", 0),
dllimports.NewEnergyImport("CEFChromium_SetOnDraggableRegionsChanged", 0),
//TCEFChromium - proc
dllimports.NewEnergyImport("CEFChromium_Free", 0),
dllimports.NewEnergyImport("CEFChromium_GetHashCode", 0),
......@@ -657,6 +661,8 @@ const (
internale_CEFChromium_SetOnKeyEvent
internale_CEFChromium_SetOnTitleChange
internale_CEFChromium_SetOnRenderCompMsg
internale_CEFChromium_SetOnWidgetCompMsg
internale_CEFChromium_SetOnBrowserCompMsg
internale_CEFChromium_SetOnRenderProcessTerminated
internale_CEFChromium_SetOnRenderViewReady
internale_CEFChromium_SetOnScrollOffsetChanged
......@@ -680,6 +686,8 @@ const (
internale_CEFChromium_SetOnMainFrameChanged
internale_CEFChromium_SetOnBeforePopup
internale_CEFChromium_SetOnOpenUrlFromTab
internale_CEFChromium_SetOnDragEnter
internale_CEFChromium_SetOnDraggableRegionsChanged
//TCEFChromium - proc
internale_CEFChromium_Free
internale_CEFChromium_GetHashCode
......
......@@ -214,6 +214,10 @@ type ICefClient struct {
instance unsafe.Pointer
}
type ICefDragData struct {
instance unsafe.Pointer
}
func NewCefDraggableRegion(rect *TCefRect, draggable bool) TCefDraggableRegion {
return TCefDraggableRegion{
Bounds: *rect,
......
......@@ -9,6 +9,7 @@
package cef
import (
"fmt"
"github.com/energye/energy/common"
"github.com/energye/energy/common/assetserve"
"github.com/energye/energy/consts"
......@@ -53,6 +54,7 @@ func NewViewsFrameworkBrowserWindow(chromiumConfig *tCefChromiumConfig, windowPr
}
m.chromium.SetEnableMultiBrowserMode(true)
m.windowComponent.SetOnWindowCreated(func(sender lcl.IObject, window *ICefWindow) {
fmt.Println("args-ProcessType", common.Args.ProcessType())
if m.chromium.CreateBrowserByBrowserViewComponent(windowProperty.Url, m.browserViewComponent) {
m.windowComponent.AddChildView(m.browserViewComponent)
if windowProperty.Title != "" {
......@@ -68,10 +70,10 @@ func NewViewsFrameworkBrowserWindow(chromiumConfig *tCefChromiumConfig, windowPr
}
m.browserViewComponent.RequestFocus()
regions := NewCefDraggableRegions()
regions.Append(NewCefDraggableRegion(NewCefRect(0, 0, 600, 600), true))
regions.Append(NewCefDraggableRegion(NewCefRect(0, 0, 100, 50), false))
window.SetDraggableRegions(regions.Regions())
//regions := NewCefDraggableRegions()
//regions.Append(NewCefDraggableRegion(NewCefRect(0, 0, 600, 100), true))
//regions.Append(NewCefDraggableRegion(NewCefRect(0, 0, 100, 50), false))
//window.SetDraggableRegions(regions.Regions())
m.windowComponent.Show()
if m.doOnWindowCreated != nil {
m.doOnWindowCreated(sender, window)
......@@ -93,6 +95,12 @@ func (m *browser) appContextInitialized(app *TCEFApplication) {
vFrameBrowserWindow.tray.close()
}
})
vFrameBrowserWindow.Chromium().SetOnLoadEnd(func(sender lcl.IObject, browser *ICefBrowser, frame *ICefFrame, httpStatusCode int32) {
regions := NewCefDraggableRegions()
regions.Append(NewCefDraggableRegion(NewCefRect(0, 0, 600, 100), true))
regions.Append(NewCefDraggableRegion(NewCefRect(0, 0, 100, 50), false))
vFrameBrowserWindow.windowComponent.SetDraggableRegions(regions.Regions())
})
vFrameBrowserWindow.resetWindowPropertyEvent()
vFrameBrowserWindow.SetWindowType(consts.WT_POPUP_SUB_BROWSER)
vFrameBrowserWindow.windowId = BrowserWindow.GetNextWindowNum()
......@@ -110,6 +118,7 @@ func (m *browser) appContextInitialized(app *TCEFApplication) {
}
BrowserWindow.mainVFBrowserWindow = vFrameBrowserWindow
if m.Config.browserWindowOnEventCallback != nil {
BrowserWindow.browserEvent.chromium = vFrameBrowserWindow.chromium
m.Config.browserWindowOnEventCallback(BrowserWindow.browserEvent, vFrameBrowserWindow)
}
vFrameBrowserWindow.windowComponent.CreateTopLevelWindow()
......
......@@ -11,6 +11,7 @@ package consts
import (
"github.com/energye/energy/types"
"github.com/energye/golcl/energy/homedir"
"math"
"os"
"path/filepath"
)
......@@ -617,3 +618,16 @@ const (
CEF_CTT_NORMAL = TCefChromeToolbarType(2)
CEF_CTT_LOCATION = TCefChromeToolbarType(3)
)
type TCefDragOperations = types.Cardinal
const (
DRAG_OPERATION_NONE = TCefDragOperations(0)
DRAG_OPERATION_COPY = TCefDragOperations(1)
DRAG_OPERATION_LINK = TCefDragOperations(2)
DRAG_OPERATION_GENERIC = TCefDragOperations(4)
DRAG_OPERATION_PRIVATE = TCefDragOperations(8)
DRAG_OPERATION_MOVE = TCefDragOperations(16)
DRAG_OPERATION_DELETE = TCefDragOperations(32)
DRAG_OPERATION_EVERY = TCefDragOperations(math.MaxUint32)
)
......@@ -7,6 +7,7 @@ import (
"github.com/energye/energy/common/assetserve"
"github.com/energye/energy/consts"
"github.com/energye/energy/ipc"
"github.com/energye/energy/types"
"github.com/energye/golcl/lcl"
)
......@@ -30,6 +31,9 @@ func main() {
window.SetSize(1600, 900)
fmt.Println("cef.BrowserWindow.SetViewFrameBrowserInit", window)
fmt.Println("LCL", window.AsLCLBrowserWindow(), "VF", window.AsViewsFrameworkBrowserWindow())
event.SetOnDraggableRegionsChanged(func(sender lcl.IObject, browser *cef.ICefBrowser, frame *cef.ICefFrame, regionsCount types.NativeUInt, regions *cef.TCefDraggableRegions) {
fmt.Println("SetOnDraggableRegionsChanged", regionsCount)
})
event.SetOnBeforeContextMenu(func(sender lcl.IObject, browser *cef.ICefBrowser, frame *cef.ICefFrame, params *cef.ICefContextMenuParams, model *cef.ICefMenuModel) {
model.AddCheckItem(model.CefMis.NextCommandId(), "测试")
})
......@@ -58,6 +62,7 @@ func main() {
//window.HideTitle()
cefTray(window)
window.Show()
fmt.Println("SetBrowserInit 结束")
})
cef.BrowserWindow.SetBrowserInitAfter(func(window cef.IBrowserWindow) {
bw := window.AsViewsFrameworkBrowserWindow().BrowserWindow()
......
......@@ -11,7 +11,7 @@
</script>
</head>
<body style="overflow: hidden;margin: 0px;padding: 0px; ">
<div style="width: 600px;height: 600px;-webkit-app-region: drag;border: 1px solid red;">
<div style="width: 600px;height: 100px;-webkit-app-region: drag; border: 1px solid red;">
<a href="https://www.baidu.com" target="_blank" style="-webkit-app-region: no-drag">百度</a>
<a href="/" target="_blank">index</a>
<a href="https://energy.yanghy.cn">Energy</a>
......
......@@ -7,6 +7,7 @@ import (
"github.com/energye/energy/common"
"github.com/energye/energy/consts"
"github.com/energye/energy/ipc"
t "github.com/energye/energy/types"
"github.com/energye/golcl/lcl"
"github.com/energye/golcl/lcl/types"
"strings"
......@@ -266,6 +267,12 @@ func AppBrowserInit() {
//自己调用系统的保存对话框获得保存路径
dlSave := lcl.NewSaveDialog(window.BrowserWindow())
dlSave.SetTitle("保存对话框标题")
event.SetOnWidgetCompMsg(func(sender lcl.IObject, message types.TMessage, aHandled bool) {
fmt.Println("SetOnWidgetCompMsg", message)
})
event.SetOnDraggableRegionsChanged(func(sender lcl.IObject, browser *cef.ICefBrowser, frame *cef.ICefFrame, regionsCount t.NativeUInt, regions *cef.TCefDraggableRegions) {
fmt.Println("SetOnDraggableRegionsChanged", regionsCount)
})
event.SetOnBeforeDownload(func(sender lcl.IObject, browser *cef.ICefBrowser, beforeDownloadItem *cef.DownloadItem, suggestedName string, callback *cef.ICefBeforeDownloadCallback) {
fmt.Println("OnBeforeDownload:", beforeDownloadItem, suggestedName)
//linux下 需要这样使用 Sync
......@@ -407,17 +414,8 @@ func cefTray(browserWindow cef.IBrowserWindow) {
tray.SetTitle("任务管理器里显示的标题")
tray.SetHint("这里是文字\n文字啊")
tray.SetIconFS("resources/icon.ico")
var s = false
tray.SetOnClick(func(sender lcl.IObject) {
cef.QueueAsyncCall(func(id int) {
fmt.Println("s", s)
s = !s
if s {
browserWindow.HideTitle()
} else {
browserWindow.ShowTitle()
}
})
fmt.Println("SetOnClick", sender)
})
tray.SetBalloon("气泡标题", "气泡内容", 2000)
ipc.IPC.Browser().On("tray-show-balloon", func(context ipc.IIPCContext) {
......
......@@ -26,6 +26,7 @@ type TCefColor = UInt16
type Integer = Int32
type NativeUInt = UInt32
type TCefString = String
type Cardinal = UInt32
type TString struct {
value string
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册