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

优化窗口状态变化

上级 fab1c6b6
...@@ -50,7 +50,7 @@ type LCLBrowserWindow struct { ...@@ -50,7 +50,7 @@ type LCLBrowserWindow struct {
auxTools *auxTools //辅助工具 auxTools *auxTools //辅助工具
tray ITray //托盘 tray ITray //托盘
hWnd types.HWND // hWnd types.HWND //
windowsState types.TWindowState // windowState types.TWindowState //窗口状态
cwcap *customWindowCaption //自定义窗口标题栏 cwcap *customWindowCaption //自定义窗口标题栏
} }
...@@ -515,6 +515,10 @@ func (m *LCLBrowserWindow) Minimize() { ...@@ -515,6 +515,10 @@ func (m *LCLBrowserWindow) Minimize() {
}) })
} }
func (m *LCLBrowserWindow) Restore() {
m.SetWindowState(types.WsNormal)
}
// 关闭带有浏览器的窗口 // 关闭带有浏览器的窗口
func (m *LCLBrowserWindow) CloseBrowserWindow() { func (m *LCLBrowserWindow) CloseBrowserWindow() {
if m.TForm == nil { if m.TForm == nil {
......
...@@ -16,7 +16,7 @@ import ( ...@@ -16,7 +16,7 @@ import (
"github.com/energye/golcl/lcl/types" "github.com/energye/golcl/lcl/types"
) )
//TODO no // TODO no
type customWindowCaption struct { type customWindowCaption struct {
bw *LCLBrowserWindow bw *LCLBrowserWindow
regions *TCefDraggableRegions regions *TCefDraggableRegions
...@@ -26,7 +26,7 @@ func (m *customWindowCaption) free() { ...@@ -26,7 +26,7 @@ func (m *customWindowCaption) free() {
//TODO no //TODO no
} }
//显示标题栏 // 显示标题栏
func (m *LCLBrowserWindow) ShowTitle() { func (m *LCLBrowserWindow) ShowTitle() {
if m.TForm == nil { if m.TForm == nil {
return return
...@@ -34,7 +34,7 @@ func (m *LCLBrowserWindow) ShowTitle() { ...@@ -34,7 +34,7 @@ func (m *LCLBrowserWindow) ShowTitle() {
m.TForm.SetBorderStyle(types.BsSizeable) m.TForm.SetBorderStyle(types.BsSizeable)
} }
//隐藏标题栏 // 隐藏标题栏
func (m *LCLBrowserWindow) HideTitle() { func (m *LCLBrowserWindow) HideTitle() {
if m.TForm == nil { if m.TForm == nil {
return return
...@@ -50,7 +50,7 @@ func (m *LCLBrowserWindow) registerWindowsCompMsgEvent() { ...@@ -50,7 +50,7 @@ func (m *LCLBrowserWindow) registerWindowsCompMsgEvent() {
func (m *LCLBrowserWindow) setDraggableRegions() { func (m *LCLBrowserWindow) setDraggableRegions() {
} }
//for other platform maximize and restore // for other platform maximize and restore
func (m *LCLBrowserWindow) Maximize() { func (m *LCLBrowserWindow) Maximize() {
if m.TForm == nil { if m.TForm == nil {
return return
...@@ -61,7 +61,7 @@ func (m *LCLBrowserWindow) Maximize() { ...@@ -61,7 +61,7 @@ func (m *LCLBrowserWindow) Maximize() {
if m.windowProperty == nil { if m.windowProperty == nil {
m.windowProperty = &WindowProperty{} m.windowProperty = &WindowProperty{}
} }
if bs == types.BsNone || bs == types.BsSingle { //不能调整窗口大,所以手动控制窗口大小 if bs == types.BsNone || bs == types.BsSingle { //不能调整窗口大,所以手动控制窗口状态
var ws = m.WindowState() var ws = m.WindowState()
var redWindowState types.TWindowState var redWindowState types.TWindowState
//默认状态0 //默认状态0
......
...@@ -202,8 +202,8 @@ func (m *LCLBrowserWindow) doOnRenderCompMsg(message *types.TMessage, lResult *t ...@@ -202,8 +202,8 @@ func (m *LCLBrowserWindow) doOnRenderCompMsg(message *types.TMessage, lResult *t
*lResult = HTCAPTION *lResult = HTCAPTION
*aHandled = true *aHandled = true
win.ReleaseCapture() win.ReleaseCapture()
m.windowsState = m.WindowState() m.windowState = m.WindowState()
if m.windowsState == types.WsNormal { if m.windowState == types.WsNormal {
rtl.PostMessage(m.Handle(), WM_SYSCOMMAND, SC_MAXIMIZE, 0) rtl.PostMessage(m.Handle(), WM_SYSCOMMAND, SC_MAXIMIZE, 0)
} else { } else {
rtl.PostMessage(m.Handle(), WM_SYSCOMMAND, SC_RESTORE, 0) rtl.PostMessage(m.Handle(), WM_SYSCOMMAND, SC_RESTORE, 0)
...@@ -303,8 +303,8 @@ func (m *LCLBrowserWindow) Maximize() { ...@@ -303,8 +303,8 @@ func (m *LCLBrowserWindow) Maximize() {
} }
QueueAsyncCall(func(id int) { QueueAsyncCall(func(id int) {
win.ReleaseCapture() win.ReleaseCapture()
m.windowsState = m.WindowState() m.windowState = m.WindowState()
if m.windowsState == types.WsNormal { if m.windowState == types.WsNormal {
rtl.PostMessage(m.Handle(), WM_SYSCOMMAND, SC_MAXIMIZE, 0) rtl.PostMessage(m.Handle(), WM_SYSCOMMAND, SC_MAXIMIZE, 0)
} else { } else {
rtl.SendMessage(m.Handle(), WM_SYSCOMMAND, SC_RESTORE, 0) rtl.SendMessage(m.Handle(), WM_SYSCOMMAND, SC_RESTORE, 0)
......
...@@ -38,9 +38,10 @@ type ViewsFrameworkBrowserWindow struct { ...@@ -38,9 +38,10 @@ type ViewsFrameworkBrowserWindow struct {
frames TCEFFrame //当前浏览器下的所有frame frames TCEFFrame //当前浏览器下的所有frame
auxTools *auxTools //辅助工具 auxTools *auxTools //辅助工具
tray ITray //托盘 tray ITray //托盘
doOnWindowCreated WindowComponentOnWindowCreated // doOnWindowCreated WindowComponentOnWindowCreated //窗口创建
doOnGetInitialBounds WindowComponentOnGetInitialBounds //窗口初始bounds doOnGetInitialBounds WindowComponentOnGetInitialBounds //窗口初始bounds
regions *TCefDraggableRegions //窗口内html拖拽区域 regions *TCefDraggableRegions //窗口内html拖拽区域
windowState types.TWindowState //窗口状态
} }
// 创建 ViewsFrameworkBrowserWindow 窗口 // 创建 ViewsFrameworkBrowserWindow 窗口
...@@ -467,8 +468,24 @@ func (m *ViewsFrameworkBrowserWindow) Close() { ...@@ -467,8 +468,24 @@ func (m *ViewsFrameworkBrowserWindow) Close() {
m.WindowComponent().Close() m.WindowComponent().Close()
} }
func (m *ViewsFrameworkBrowserWindow) WindowState() types.TWindowState {
if m.windowComponent.IsMinimized() {
return types.WsMinimized
} else if m.windowComponent.IsMaximized() {
return types.WsMaximized
} else if m.windowComponent.IsFullscreen() {
return types.WsFullScreen
}
return types.WsNormal
}
func (m *ViewsFrameworkBrowserWindow) Maximize() { func (m *ViewsFrameworkBrowserWindow) Maximize() {
m.WindowComponent().Maximize() m.windowState = m.WindowState()
if m.windowState == types.WsNormal {
m.WindowComponent().Maximize()
} else {
m.Restore()
}
} }
func (m *ViewsFrameworkBrowserWindow) Minimize() { func (m *ViewsFrameworkBrowserWindow) Minimize() {
......
...@@ -66,6 +66,7 @@ type IBrowserWindow interface { ...@@ -66,6 +66,7 @@ type IBrowserWindow interface {
Hide() //隐藏窗口 Hide() //隐藏窗口
Maximize() //窗口最大化 Maximize() //窗口最大化
Minimize() //窗口最小化 Minimize() //窗口最小化
Restore() //窗口还原
Close() //关闭窗口 Close() //关闭窗口
CloseBrowserWindow() //关闭浏览器窗口 CloseBrowserWindow() //关闭浏览器窗口
WindowType() consts.WINDOW_TYPE //窗口类型 WindowType() consts.WINDOW_TYPE //窗口类型
......
...@@ -14,6 +14,7 @@ import ( ...@@ -14,6 +14,7 @@ import (
"github.com/energye/energy/types" "github.com/energye/energy/types"
"github.com/energye/golcl/energy/emfs" "github.com/energye/golcl/energy/emfs"
"github.com/energye/golcl/lcl/api" "github.com/energye/golcl/lcl/api"
t "github.com/energye/golcl/lcl/types"
"io/ioutil" "io/ioutil"
"unsafe" "unsafe"
) )
...@@ -65,6 +66,17 @@ func (m *ICefWindow) IsAlwaysOnTop() bool { ...@@ -65,6 +66,17 @@ func (m *ICefWindow) IsAlwaysOnTop() bool {
return api.GoBool(r1) return api.GoBool(r1)
} }
func (m *ICefWindow) WindowState() t.TWindowState {
if m.IsMinimized() {
return t.WsMinimized
} else if m.IsMaximized() {
return t.WsMaximized
} else if m.IsFullscreen() {
return t.WsFullScreen
}
return t.WsNormal
}
func (m *ICefWindow) Maximize() { func (m *ICefWindow) Maximize() {
imports.Proc(internale_ICEFWindow_Maximize).Call(uintptr(m.instance)) imports.Proc(internale_ICEFWindow_Maximize).Call(uintptr(m.instance))
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册