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

upgrade: beta fix: macosx close bug

上级 7cd1173b
...@@ -417,7 +417,6 @@ func (m *BaseWindow) registerDefaultEvent() { ...@@ -417,7 +417,6 @@ func (m *BaseWindow) registerDefaultEvent() {
}) })
} }
func (m *BaseWindow) close(sender lcl.IObject, action *types.TCloseAction) { func (m *BaseWindow) close(sender lcl.IObject, action *types.TCloseAction) {
logger.Debug("close")
var ret bool var ret bool
if m.onClose != nil { if m.onClose != nil {
for _, fn := range m.onClose { for _, fn := range m.onClose {
...@@ -427,6 +426,7 @@ func (m *BaseWindow) close(sender lcl.IObject, action *types.TCloseAction) { ...@@ -427,6 +426,7 @@ func (m *BaseWindow) close(sender lcl.IObject, action *types.TCloseAction) {
} }
} }
if !ret { if !ret {
logger.Debug("window.onClose")
*action = types.CaFree *action = types.CaFree
} }
} }
...@@ -441,13 +441,13 @@ func (m *BaseWindow) closeQuery(sender lcl.IObject, close *bool) { ...@@ -441,13 +441,13 @@ func (m *BaseWindow) closeQuery(sender lcl.IObject, close *bool) {
} }
} }
if !ret { if !ret {
logger.Debug("closeQuery windowType:", m.WindowType()) logger.Debug("window.onCloseQuery windowType:", m.WindowType())
if IsDarwin() { if IsDarwin() {
//main window close //main window close
if m.WindowType() == WT_MAIN_BROWSER { if m.WindowType() == WT_MAIN_BROWSER {
*close = true *close = true
desChildWind := m.windowParent.DestroyChildWindow() desChildWind := m.windowParent.DestroyChildWindow()
logger.Debug("closeQuery windowParent DestroyChildWindow:", desChildWind) logger.Debug("window.onCloseQuery => windowParent.DestroyChildWindow:", desChildWind)
} else { } else {
//sub window close //sub window close
*close = m.canClose *close = m.canClose
...@@ -472,33 +472,39 @@ func (m *BaseWindow) closeQuery(sender lcl.IObject, close *bool) { ...@@ -472,33 +472,39 @@ func (m *BaseWindow) closeQuery(sender lcl.IObject, close *bool) {
func (m *BaseWindow) registerDefaultChromiumCloseEvent() { func (m *BaseWindow) registerDefaultChromiumCloseEvent() {
var bwEvent = BrowserWindow.browserEvent var bwEvent = BrowserWindow.browserEvent
m.chromium.SetOnClose(func(sender lcl.IObject, browser *ICefBrowser, aAction *TCefCloseBrowsesAction) { m.chromium.SetOnClose(func(sender lcl.IObject, browser *ICefBrowser, aAction *TCefCloseBrowsesAction) {
logger.Debug("chromium close") logger.Debug("chromium.onClose")
if IsDarwin() { //MacOSX if IsDarwin() { //MacOSX
logger.Debug("chromium close windowParent DestroyChildWindow:", m.windowParent.DestroyChildWindow()) desChildWind := m.windowParent.DestroyChildWindow()
logger.Debug("chromium.onClose => windowParent.DestroyChildWindow:", desChildWind)
} else { // Window and Linux } else { // Window and Linux
QueueAsyncCall(func(id int) { //main thread run //QueueAsyncCall(func(id int) { //main thread run
m.windowParent.Free() // m.windowParent.Free()
logger.Debug("chromium close windowParent Free") // logger.Debug("chromium.onClose => windowParent.Free")
}) //})
} }
if IsLinux() { QueueAsyncCall(func(id int) { //main thread run
//继续关闭 -> OnBeforeClose m.windowParent.Free()
*aAction = CbaClose logger.Debug("chromium.onClose => windowParent.Free")
} else { })
//暂时停止关闭 -> OnBeforeClose *aAction = CbaClose
*aAction = CbaDelay //if IsLinux() {
} // //继续关闭 -> OnBeforeClose
// *aAction = CbaClose
//} else {
// //暂时停止关闭 -> OnBeforeClose
// *aAction = CbaDelay
//}
if bwEvent.onClose != nil { if bwEvent.onClose != nil {
bwEvent.onClose(sender, browser, aAction) bwEvent.onClose(sender, browser, aAction)
} }
}) })
m.chromium.SetOnBeforeClose(func(sender lcl.IObject, browser *ICefBrowser) { m.chromium.SetOnBeforeClose(func(sender lcl.IObject, browser *ICefBrowser) {
logger.Debug("chromium beforeClose") logger.Debug("chromium.onBeforeClose")
m.canClose = true m.canClose = true
var tempClose = func() { var tempClose = func() {
defer func() { defer func() {
if err := recover(); err != nil { if err := recover(); err != nil {
logger.Error("OnBeforeClose Error:", err) logger.Error("chromium.OnBeforeClose Error:", err)
} }
}() }()
if m.windowInfo.auxTools.viewSourceWindow != nil { if m.windowInfo.auxTools.viewSourceWindow != nil {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册