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

优化窗口状态变化

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