- Joined
- Jan 2, 2020
- Messages
- 1,414
If you make fullscreen using your mouse, the hidden popup titlebar is preserved and it is all and well.
But when you give a fullscreen command the resize flag gets ignored so there's no way to go back (except a programmatical one).
Is there a way to give a fullscreen command and avoid that the titlebar avoids forever?
From the GLWF documentation :
"GLFW_RESIZABLE specifies whether the windowed mode window will be resizable by the user. The window will still be resizable using the glfwSetWindowSize function. Possible values are GLFW_TRUE and GLFW_FALSE. This hint is ignored for full screen and undecorated windows."
An example to demonstrated the behaviour (tested on macOS only so far but it should be consistent over all desktop platforms i believe)
But when you give a fullscreen command the resize flag gets ignored so there's no way to go back (except a programmatical one).
Is there a way to give a fullscreen command and avoid that the titlebar avoids forever?
From the GLWF documentation :
"GLFW_RESIZABLE specifies whether the windowed mode window will be resizable by the user. The window will still be resizable using the glfwSetWindowSize function. Possible values are GLFW_TRUE and GLFW_FALSE. This hint is ignored for full screen and undecorated windows."
An example to demonstrated the behaviour (tested on macOS only so far but it should be consistent over all desktop platforms i believe)
Cerberus:
#GLFW_WINDOW_WIDTH = 128
#GLFW_WINDOW_HEIGHT = 128
#GLFW_WINDOW_RENDER_WHILE_RESIZING = True ' AVOID ugly window resize animaTION IN MACOS when YOU DO RESIZE USING THE MOUSE
#GLFW_WINDOW_RESIZABLE = True
Strict
Import mojo2
Function Main:Int()
New myApp()
Return 0
End
Class myApp Extends App
Field myCanvas:Canvas
Field fullscreen:Bool = True
Method OnCreate:Int()
myCanvas = New Canvas()
SetSwapInterval 1
SetUpdateRate 0
Return 0
End
Method OnUpdate:Int()
If KeyHit(KEY_ESCAPE) Then OnClose() ' esc is Panic exit
If KeyHit( KEY_A ) Then fullscreen = False ; ToggleFullscreen ' A for programmatic fullscreen (try resize using the mouse first)
Return 0
End
Method OnRender:Int()
myCanvas.Clear 0,1,0
myCanvas.Flush
Return 0
End
Method ToggleFullscreen:Void()
Local desktop:DisplayMode = DesktopMode()
Local awidth : Int = desktop.Width
Local aheight : Int = desktop.Height
fullscreen = Not fullscreen
If Not fullscreen
SetDeviceWindow 800,600, 4+2
myCanvas.SetViewport 0,0,800,600
myCanvas.SetScissor 0,0,800,600
myCanvas.Clear 0,1,0
Else
SetDeviceWindow awidth,aheight, 1 + 2 + 4
myCanvas.SetViewport 0,0,awidth,aheight
myCanvas.SetScissor 0,0,awidth,aheight
myCanvas.Clear 0,1,0
Endif
End
End