diff --git a/examples/windowsize/main.go b/examples/windowsize/main.go index 3af42228e..3a99d4787 100644 --- a/examples/windowsize/main.go +++ b/examples/windowsize/main.go @@ -251,7 +251,7 @@ func (g *game) Update(screen *ebiten.Image) error { ebiten.SetWindowDecorated(decorated) ebiten.SetWindowPosition(positionX, positionY) ebiten.SetWindowFloating(floating) - if maximize { + if maximize && ebiten.IsWindowResizable() { ebiten.MaximizeWindow() } if minimize { @@ -294,7 +294,7 @@ func (g *game) Draw(screen *ebiten.Image) { } var lines []string - if !ebiten.IsWindowMaximized() { + if !ebiten.IsWindowMaximized() && ebiten.IsWindowResizable() { lines = append(lines, "[M] Maximize the window") } if !ebiten.IsWindowMinimized() { @@ -403,6 +403,7 @@ func main() { ebiten.SetWindowFloating(true) } if *flagMaximize { + ebiten.SetWindowResizable(true) ebiten.MaximizeWindow() } if *flagAutoAdjusting { diff --git a/internal/uidriver/glfw/window.go b/internal/uidriver/glfw/window.go index 7c1541ec6..cad5df1af 100644 --- a/internal/uidriver/glfw/window.go +++ b/internal/uidriver/glfw/window.go @@ -129,6 +129,9 @@ func (w *window) IsMaximized() bool { } func (w *window) Maximize() { + if !w.IsResizable() { + panic("glfw: a window to maximize must be resizable") + } if !w.ui.isRunning() { w.ui.setInitWindowMaximized(true) return diff --git a/window.go b/window.go index 53ab1df33..e00c5cd60 100644 --- a/window.go +++ b/window.go @@ -262,12 +262,15 @@ func SetWindowFloating(float bool) { // MaximizeWindow maximizes the window. // -// On some environments like macOS, MaximizeWindow requres that the window is resizable. +// MaximizeWindow panics when the window is not resizable. // // MaximizeWindow does nothing on browsers or mobiles. // // MaximizeWindow is concurrent-safe. func MaximizeWindow() { + if !IsWindowResizable() { + panic("ebiten: a window to maximize must be resizable") + } if w := uiDriver().Window(); w != nil { w.Maximize() }