feat(display): enable borderless fullscreen by default, F11/Alt+Enter toggle, and menu button
checkpoint / checkpoint (push) Failing after 6m3s
checkpoint / checkpoint (push) Failing after 6m3s
This commit is contained in:
@@ -46,3 +46,28 @@ func clear() -> void:
|
||||
port = 0
|
||||
active = false
|
||||
editing = false
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event is InputEventKey and event.pressed and not event.echo:
|
||||
if event.keycode == KEY_F11 or (event.keycode == KEY_ENTER and event.alt_pressed):
|
||||
toggle_fullscreen()
|
||||
get_viewport().set_input_as_handled()
|
||||
|
||||
|
||||
func toggle_fullscreen() -> void:
|
||||
if DisplayServer.get_name() == "headless":
|
||||
return
|
||||
var current_mode := DisplayServer.window_get_mode()
|
||||
if current_mode == DisplayServer.WINDOW_MODE_FULLSCREEN or current_mode == DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN:
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
|
||||
var screen_id := DisplayServer.window_get_current_screen()
|
||||
var screen_rect := DisplayServer.screen_get_usable_rect(screen_id)
|
||||
var target_w := mini(1280, int(screen_rect.size.x * 0.9))
|
||||
var target_h := mini(720, int(screen_rect.size.y * 0.9))
|
||||
DisplayServer.window_set_size(Vector2i(target_w, target_h))
|
||||
var pos := screen_rect.position + (screen_rect.size - Vector2i(target_w, target_h)) / 2
|
||||
DisplayServer.window_set_position(pos)
|
||||
else:
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user