[Windows] Restore min/max after fullscreen

This commit is contained in:
Lea Anthony
2022-02-10 19:55:04 +11:00
parent e4122ce4d2
commit 876b845762
2 changed files with 42 additions and 22 deletions
@@ -40,11 +40,10 @@ type Frontend struct {
startURL string
// main window handle
mainWindow *Window
minWidth, minHeight, maxWidth, maxHeight int
bindings *binding.Bindings
dispatcher frontend.Dispatcher
servingFromDisk bool
mainWindow *Window
bindings *binding.Bindings
dispatcher frontend.Dispatcher
servingFromDisk bool
hasStarted bool
}
@@ -57,10 +56,6 @@ func NewFrontend(ctx context.Context, appoptions *options.App, myLogger *logger.
bindings: appBindings,
dispatcher: dispatcher,
ctx: ctx,
minHeight: appoptions.MinHeight,
minWidth: appoptions.MinWidth,
maxHeight: appoptions.MaxHeight,
maxWidth: appoptions.MaxWidth,
startURL: "file://wails/",
}
@@ -171,8 +166,6 @@ func (f *Frontend) WindowSetTitle(title string) {
func (f *Frontend) WindowFullscreen() {
runtime.LockOSThread()
f.mainWindow.SetMaxSize(0, 0)
f.mainWindow.SetMinSize(0, 0)
if f.frontendOptions.Frameless && f.frontendOptions.DisableResize == false {
f.ExecJS("window.wails.flags.enableResize = false;")
}
@@ -185,8 +178,6 @@ func (f *Frontend) WindowUnFullscreen() {
f.ExecJS("window.wails.flags.enableResize = true;")
}
f.mainWindow.UnFullscreen()
f.mainWindow.SetMaxSize(f.maxWidth, f.maxHeight)
f.mainWindow.SetMinSize(f.minWidth, f.minHeight)
}
func (f *Frontend) WindowShow() {
@@ -227,14 +218,10 @@ func (f *Frontend) WindowUnminimise() {
func (f *Frontend) WindowSetMinSize(width int, height int) {
runtime.LockOSThread()
f.minWidth = width
f.minHeight = height
f.mainWindow.SetMinSize(width, height)
}
func (f *Frontend) WindowSetMaxSize(width int, height int) {
runtime.LockOSThread()
f.maxWidth = width
f.maxHeight = height
f.mainWindow.SetMaxSize(width, height)
}
+38 -5
View File
@@ -16,14 +16,20 @@ import (
type Window struct {
winc.Form
frontendOptions *options.App
applicationMenu *menu.Menu
notifyParentWindowPositionChanged func() error
frontendOptions *options.App
applicationMenu *menu.Menu
notifyParentWindowPositionChanged func() error
minWidth, minHeight, maxWidth, maxHeight int
}
func NewWindow(parent winc.Controller, appoptions *options.App) *Window {
result := new(Window)
result.frontendOptions = appoptions
result := &Window{
frontendOptions: appoptions,
minHeight: appoptions.MinHeight,
minWidth: appoptions.MinWidth,
maxHeight: appoptions.MaxHeight,
maxWidth: appoptions.MaxWidth,
}
result.SetIsForm(true)
var exStyle int
@@ -89,6 +95,33 @@ func (w *Window) Run() int {
return winc.RunMainLoop()
}
func (w *Window) Fullscreen() {
w.Form.SetMaxSize(0, 0)
w.Form.SetMinSize(0, 0)
w.Form.Fullscreen()
}
func (w *Window) UnFullscreen() {
if !w.IsFullScreen() {
return
}
w.Form.UnFullscreen()
w.SetMinSize(w.minWidth, w.minHeight)
w.SetMaxSize(w.maxWidth, w.maxHeight)
}
func (w *Window) SetMinSize(minWidth int, minHeight int) {
w.minWidth = minWidth
w.minHeight = minHeight
w.Form.SetMinSize(minWidth, minHeight)
}
func (w *Window) SetMaxSize(maxWidth int, maxHeight int) {
w.maxWidth = maxWidth
w.maxHeight = maxHeight
w.Form.SetMaxSize(maxWidth, maxHeight)
}
func (w *Window) WndProc(msg uint32, wparam, lparam uintptr) uintptr {
switch msg {