diff --git a/code/datums/keybindings/client.dm b/code/datums/keybindings/client.dm index 23a89404931..ac39a724cef 100644 --- a/code/datums/keybindings/client.dm +++ b/code/datums/keybindings/client.dm @@ -9,6 +9,14 @@ . = ..() C.adminhelp() +/datum/keybinding/client/toggle_fullscreen + name ="Toggle Fullscreen" + keys = list("F11") + +/datum/keybinding/client/toggle_fullscreen/down(client/C) + . = ..() + C.toggle_fullscreen() + /datum/keybinding/client/toggle_min_hud name = "Toggle Minimal HUD" keys = list("F12") diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index d47f82b5e02..1f724e7386a 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -225,6 +225,9 @@ /// Our object window datum. It stores info about and handles behavior for the object tab var/datum/object_window_info/obj_window + /// The current fullscreen state for /client/toggle_fullscreen() + var/fullscreen = FALSE + /client/vv_edit_var(var_name, var_value) switch(var_name) // I know we will never be in a world where admins are editing client vars to let people bypass TOS diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 73c0d726df4..02145bca38e 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -1270,6 +1270,31 @@ class = "unknown" debug_variables(stat_item) message_admins("Admin [key_name_admin(usr)] is debugging the [stat_item] [class].") +/** +* Handles fullscreen on the client. +*/ +/client/verb/toggle_fullscreen() + set name = "Toggle Fullscreen" + set category = "OOC" + + fullscreen = !fullscreen + + if(fullscreen) + winset(usr, "mainwindow", "titlebar=false") + winset(usr, "mainwindow", "can-resize=false") + winset(usr, "mainwindow", "is-maximized=false") // Ensures the window doesn't get stretched oddly. + winset(usr, "mainwindow", "is-maximized=true") + winset(usr, "mainwindow", "is-fullscreen=true") + winset(usr, "mainwindow", "menu=") // Top-Menu bar [DISABLED] + else + winset(usr, "mainwindow", "titlebar=true") + winset(usr, "mainwindow", "can-resize=true") + winset(usr, "mainwindow", "is-fullscreen=false") // Order matters. Fullscreen [OFF] -> Maximize [TRUE] + winset(usr, "mainwindow", "is-maximized=true") + winset(usr, "mainwindow", "menu=menu") + var/fullscreen_state = fullscreen ? "on" : "off" + to_chat(usr, "Toggled fullscreen [fullscreen_state]. To Toggle fullscreen; Go to the tab OOC -> Toggle fullscreen or press F11") + fit_viewport() /client/proc/try_open_reagent_editor(atom/target) var/target_UID = target.UID()