Code: Select all
;--[ Window fullscreen procedures ]----------------------------------------------------------------
Procedure EnableWindowFullscreenGadget(window)
NewCollectionBehaviour = CocoaMessage(0, WindowID(window), "collectionBehavior") | $80
CocoaMessage(0, WindowID(window), "setCollectionBehavior:", NewCollectionBehaviour)
EndProcedure
Procedure ToggleWindowFullscreen(window)
CocoaMessage(0, WindowID(window), "toggleFullScreen:")
EndProcedure
Procedure EnterWindowFullscreen(window)
CocoaMessage(0, WindowID(window), "enterFullScreenMode:")
EndProcedure
Procedure ExitWindowFullscreen(window)
CocoaMessage(0, WindowID(window), "exitFullScreenMode:")
EndProcedure
Procedure IsWindowFullscreen(window)
#NSFullScreenWindowMask = 1 << 14
ProcedureReturn Bool( CocoaMessage(0, WindowID(window), "styleMask") & #NSFullScreenWindowMask )
EndProcedure
;--------------------------------------------------------------------------------------------------
Procedure.s BoolToYesNo(bool)
If bool : ProcedureReturn "Yes" : Else : ProcedureReturn "No" : EndIf
EndProcedure
Macro UpdateText()
SetGadgetText(4, "Fullscreen: " + BoolToYesNo(IsWindowFullscreen(0)) )
EndMacro
#WinFlags = #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_Invisible
If OpenWindow(0, 0, 0, 220, 175, "Fullscreen Switch", #WinFlags)
WindowBounds(0, 220, 175, #PB_Ignore, #PB_Ignore)
EnableWindowFullscreenGadget(0)
;AddKeyboardShortcut(0,#PB_Shortcut_Control|#PB_Shortcut_Command|#PB_Shortcut_F,1) ; not required when using a menu
CreateMenu(0,0)
MenuTitle("View")
MenuItem(1, "Toggle Fullscreen" +Chr(9)+"Ctrl+Cmd+F") ; Standard OS X menu switch = Ctrl + Cmd + F
ButtonGadget(0,10, 10,200,25,"Exit")
ButtonGadget(1,10, 40,200,25,"Toggle fullscreen")
ButtonGadget(2,10, 70,200,25,"Enter fullscreen")
ButtonGadget(3,10,100,200,25,"Exit fullscreen")
TextGadget (4,10,140,200,25,"",#PB_Text_Center)
HideWindow(0,#False)
EnterWindowFullscreen(0)
UpdateText()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case 0 : End
Case 1 : ToggleWindowFullscreen(0) : UpdateText() ; Toggle fullscreen mode
Case 2 : EnterWindowFullscreen(0) : UpdateText() ; Enter fullscreen mode
Case 3 : ExitWindowFullscreen(0) : UpdateText() ; Exit fullscreen mode
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case -1 : End
Case 1 : ToggleWindowFullscreen(0) : UpdateText() ; "Toggle fullscreen" menu update
EndSelect
Case #PB_Event_SizeWindow
UpdateText() ; Update fullscreen mode after resize
; ( catches fullscreen window button clicks )
EndSelect
ForEver
EndIf