diff --git a/CHANGELOG.md b/CHANGELOG.md index a9f109421324fe3876a0fcdabadc8d64e04f1d19..958c75f9196ec450d456da2a124b3eb2b572b1db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - Gamepad API added - Support setting an initial window position +- Support hiding the window initially +- Support creating maximized windows ## [v0.10.0-beta] 2020-05-10 - Add `WindowConfig.TransparentFramebuffer` option to support window transparency onto the background diff --git a/pixelgl/window.go b/pixelgl/window.go index 2632c068877d081d49e47ee0013a536a90891248..af1f1a7b4ff39c6197fac14c3a68163b2c98f428 100644 --- a/pixelgl/window.go +++ b/pixelgl/window.go @@ -43,10 +43,10 @@ type WindowConfig struct { // specified Monitor. Monitor *Monitor - // Whether the Window is resizable. + // Resizable specifies whether the window will be resizable by the user. Resizable bool - // Undecorated Window ommits the borders and decorations (close button, etc.). + // Undecorated Window omits the borders and decorations (close button, etc.). Undecorated bool // NoIconify specifies whether fullscreen windows should not automatically @@ -68,6 +68,13 @@ type WindowConfig struct { // VSync (vertical synchronization) synchronizes Window's framerate with the framerate of // the monitor. VSync bool + + // Maximized specifies whether the window is maximized. + Maximized bool + + // Invisible specifies whether the window will be initially hidden. + // You can make the window visible later using Window.Show(). + Invisible bool } // Window is a window handler. Use this type to manipulate a window (input, drawing, etc.). @@ -122,6 +129,8 @@ func NewWindow(cfg WindowConfig) (*Window, error) { glfw.WindowHint(glfw.Floating, bool2int[cfg.AlwaysOnTop]) glfw.WindowHint(glfw.AutoIconify, bool2int[!cfg.NoIconify]) glfw.WindowHint(glfw.TransparentFramebuffer, bool2int[cfg.TransparentFramebuffer]) + glfw.WindowHint(glfw.Maximized, bool2int[cfg.Maximized]) + glfw.WindowHint(glfw.Visible, bool2int[!cfg.Invisible]) if cfg.Position.X != 0 || cfg.Position.Y != 0 { glfw.WindowHint(glfw.Visible, glfw.False) @@ -477,3 +486,11 @@ func (w *Window) Color(at pixel.Vec) pixel.RGBA { func (w *Window) Canvas() *Canvas { return w.canvas } + +// Show makes the window visible, if it was previously hidden. If the window is +// already visible or is in full screen mode, this function does nothing. +func (w *Window) Show() { + mainthread.Call(func() { + w.window.Show() + }) +}