virtualx-engine/doc/classes/DisplayServer.xml
bruvzg 74ff5921d6 Improve popup window handling.
Add window FLAG_POPUP and a platform specific routines to control popup auto-hiding and event forwarding.
2022-02-25 09:33:27 +02:00

1018 lines
41 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<class name="DisplayServer" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
</brief_description>
<description>
</description>
<tutorials>
</tutorials>
<methods>
<method name="clipboard_get" qualifiers="const">
<return type="String" />
<description>
Returns the user's clipboard as a string if possible.
</description>
</method>
<method name="clipboard_get_primary" qualifiers="const">
<return type="String" />
<description>
Returns the user's primary clipboard as a string if possible.
[b]Note:[/b] This method is only implemented on Linux.
</description>
</method>
<method name="clipboard_has" qualifiers="const">
<return type="bool" />
<description>
Returns [code]true[/code] if there is content on the user's clipboard.
</description>
</method>
<method name="clipboard_set">
<return type="void" />
<argument index="0" name="clipboard" type="String" />
<description>
Sets the user's clipboard content to the given string.
</description>
</method>
<method name="clipboard_set_primary">
<return type="void" />
<argument index="0" name="clipboard_primary" type="String" />
<description>
Sets the user's primary clipboard content to the given string.
[b]Note:[/b] This method is only implemented on Linux.
</description>
</method>
<method name="create_sub_window">
<return type="int" />
<argument index="0" name="mode" type="int" enum="DisplayServer.WindowMode" />
<argument index="1" name="vsync_mode" type="int" enum="DisplayServer.VSyncMode" />
<argument index="2" name="flags" type="int" />
<argument index="3" name="rect" type="Rect2i" default="Rect2i(0, 0, 0, 0)" />
<description>
</description>
</method>
<method name="cursor_get_shape" qualifiers="const">
<return type="int" enum="DisplayServer.CursorShape" />
<description>
</description>
</method>
<method name="cursor_set_custom_image">
<return type="void" />
<argument index="0" name="cursor" type="Resource" />
<argument index="1" name="shape" type="int" enum="DisplayServer.CursorShape" default="0" />
<argument index="2" name="hotspot" type="Vector2" default="Vector2(0, 0)" />
<description>
</description>
</method>
<method name="cursor_set_shape">
<return type="void" />
<argument index="0" name="shape" type="int" enum="DisplayServer.CursorShape" />
<description>
</description>
</method>
<method name="delete_sub_window">
<return type="void" />
<argument index="0" name="window_id" type="int" />
<description>
</description>
</method>
<method name="dialog_input_text">
<return type="int" enum="Error" />
<argument index="0" name="title" type="String" />
<argument index="1" name="description" type="String" />
<argument index="2" name="existing_text" type="String" />
<argument index="3" name="callback" type="Callable" />
<description>
</description>
</method>
<method name="dialog_show">
<return type="int" enum="Error" />
<argument index="0" name="title" type="String" />
<argument index="1" name="description" type="String" />
<argument index="2" name="buttons" type="PackedStringArray" />
<argument index="3" name="callback" type="Callable" />
<description>
</description>
</method>
<method name="enable_for_stealing_focus">
<return type="void" />
<argument index="0" name="process_id" type="int" />
<description>
</description>
</method>
<method name="force_process_and_drop_events">
<return type="void" />
<description>
</description>
</method>
<method name="get_name" qualifiers="const">
<return type="String" />
<description>
</description>
</method>
<method name="get_screen_count" qualifiers="const">
<return type="int" />
<description>
</description>
</method>
<method name="get_swap_cancel_ok">
<return type="bool" />
<description>
</description>
</method>
<method name="get_window_at_screen_position" qualifiers="const">
<return type="int" />
<argument index="0" name="position" type="Vector2i" />
<description>
</description>
</method>
<method name="get_window_list" qualifiers="const">
<return type="PackedInt32Array" />
<description>
</description>
</method>
<method name="global_menu_add_check_item">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="label" type="String" />
<argument index="2" name="callback" type="Callable" />
<argument index="3" name="tag" type="Variant" default="null" />
<description>
</description>
</method>
<method name="global_menu_add_item">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="label" type="String" />
<argument index="2" name="callback" type="Callable" />
<argument index="3" name="tag" type="Variant" default="null" />
<description>
</description>
</method>
<method name="global_menu_add_separator">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<description>
</description>
</method>
<method name="global_menu_add_submenu_item">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="label" type="String" />
<argument index="2" name="submenu" type="String" />
<description>
</description>
</method>
<method name="global_menu_clear">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<description>
</description>
</method>
<method name="global_menu_get_item_callback">
<return type="Callable" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_get_item_submenu">
<return type="String" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_get_item_tag">
<return type="Variant" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_get_item_text">
<return type="String" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_is_item_checkable" qualifiers="const">
<return type="bool" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_is_item_checked" qualifiers="const">
<return type="bool" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_remove_item">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_set_item_callback">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<argument index="2" name="callback" type="Callable" />
<description>
</description>
</method>
<method name="global_menu_set_item_checkable">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<argument index="2" name="checkable" type="bool" />
<description>
</description>
</method>
<method name="global_menu_set_item_checked">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<argument index="2" name="checked" type="bool" />
<description>
</description>
</method>
<method name="global_menu_set_item_submenu">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<argument index="2" name="submenu" type="String" />
<description>
</description>
</method>
<method name="global_menu_set_item_tag">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<argument index="2" name="tag" type="Variant" />
<description>
</description>
</method>
<method name="global_menu_set_item_text">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<argument index="2" name="text" type="String" />
<description>
</description>
</method>
<method name="has_feature" qualifiers="const">
<return type="bool" />
<argument index="0" name="feature" type="int" enum="DisplayServer.Feature" />
<description>
</description>
</method>
<method name="ime_get_selection" qualifiers="const">
<return type="Vector2i" />
<description>
</description>
</method>
<method name="ime_get_text" qualifiers="const">
<return type="String" />
<description>
</description>
</method>
<method name="keyboard_get_current_layout" qualifiers="const">
<return type="int" />
<description>
Returns active keyboard layout index.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_get_keycode_from_physical" qualifiers="const">
<return type="int" enum="Key" />
<argument index="0" name="keycode" type="int" enum="Key" />
<description>
Converts a physical (US QWERTY) [code]keycode[/code] to one in the active keyboard layout.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_get_layout_count" qualifiers="const">
<return type="int" />
<description>
Returns the number of keyboard layouts.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_get_layout_language" qualifiers="const">
<return type="String" />
<argument index="0" name="index" type="int" />
<description>
Returns the ISO-639/BCP-47 language code of the keyboard layout at position [code]index[/code].
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_get_layout_name" qualifiers="const">
<return type="String" />
<argument index="0" name="index" type="int" />
<description>
Returns the localized name of the keyboard layout at position [code]index[/code].
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_set_current_layout">
<return type="void" />
<argument index="0" name="index" type="int" />
<description>
Sets active keyboard layout.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="mouse_get_button_state" qualifiers="const">
<return type="int" enum="MouseButton" />
<description>
</description>
</method>
<method name="mouse_get_mode" qualifiers="const">
<return type="int" enum="DisplayServer.MouseMode" />
<description>
</description>
</method>
<method name="mouse_get_position" qualifiers="const">
<return type="Vector2i" />
<description>
Returns the mouse cursor's current position.
</description>
</method>
<method name="mouse_set_mode">
<return type="void" />
<argument index="0" name="mouse_mode" type="int" enum="DisplayServer.MouseMode" />
<description>
</description>
</method>
<method name="mouse_warp_to_position">
<return type="void" />
<argument index="0" name="position" type="Vector2i" />
<description>
Sets the mouse cursor position to the given [code]position[/code].
</description>
</method>
<method name="process_events">
<return type="void" />
<description>
</description>
</method>
<method name="screen_get_dpi" qualifiers="const">
<return type="int" />
<argument index="0" name="screen" type="int" default="-1" />
<description>
Returns the dots per inch density of the specified screen. If [code]screen[/code] is [/code]SCREEN_OF_MAIN_WINDOW[/code] (the default value), a screen with the main window will be used.
[b]Note:[/b] On macOS, returned value is inaccurate if fractional display scaling mode is used.
[b]Note:[/b] On Android devices, the actual screen densities are grouped into six generalized densities:
[codeblock]
ldpi - 120 dpi
mdpi - 160 dpi
hdpi - 240 dpi
xhdpi - 320 dpi
xxhdpi - 480 dpi
xxxhdpi - 640 dpi
[/codeblock]
[b]Note:[/b] This method is implemented on Android, Linux, macOS and Windows. Returns [code]72[/code] on unsupported platforms.
</description>
</method>
<method name="screen_get_max_scale" qualifiers="const">
<return type="float" />
<description>
Returns the greatest scale factor of all screens.
[b]Note:[/b] On macOS returned value is [code]2.0[/code] if there is at least one hiDPI (Retina) screen in the system, and [code]1.0[/code] in all other cases.
[b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="screen_get_orientation" qualifiers="const">
<return type="int" enum="DisplayServer.ScreenOrientation" />
<argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_get_position" qualifiers="const">
<return type="Vector2i" />
<argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_get_refresh_rate" qualifiers="const">
<return type="float" />
<argument index="0" name="screen" type="int" default="-1" />
<description>
Returns the current refresh rate of the specified screen. If [code]screen[/code] is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the main window will be used.
[b]Note:[/b] Returns [code]-1.0[/code] if the DisplayServer fails to find the refresh rate for the specified screen. On HTML5, [method screen_get_refresh_rate] will always return [code]-1.0[/code] as there is no way to retrieve the refresh rate on that platform.
To fallback to a default refresh rate if the method fails, try:
[codeblock]
var refresh_rate = DisplayServer.screen_get_refresh_rate()
if refresh_rate &lt; 0:
refresh_rate = 60.0
[/codeblock]
</description>
</method>
<method name="screen_get_scale" qualifiers="const">
<return type="float" />
<argument index="0" name="screen" type="int" default="-1" />
<description>
Returns the scale factor of the specified screen by index.
[b]Note:[/b] On macOS returned value is [code]2.0[/code] for hiDPI (Retina) screen, and [code]1.0[/code] for all other cases.
[b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="screen_get_size" qualifiers="const">
<return type="Vector2i" />
<argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_get_usable_rect" qualifiers="const">
<return type="Rect2i" />
<argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_is_kept_on" qualifiers="const">
<return type="bool" />
<description>
</description>
</method>
<method name="screen_is_touchscreen" qualifiers="const">
<return type="bool" />
<argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_set_keep_on">
<return type="void" />
<argument index="0" name="enable" type="bool" />
<description>
</description>
</method>
<method name="screen_set_orientation">
<return type="void" />
<argument index="0" name="orientation" type="int" enum="DisplayServer.ScreenOrientation" />
<argument index="1" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="set_icon">
<return type="void" />
<argument index="0" name="image" type="Image" />
<description>
</description>
</method>
<method name="set_native_icon">
<return type="void" />
<argument index="0" name="filename" type="String" />
<description>
</description>
</method>
<method name="tablet_get_current_driver" qualifiers="const">
<return type="String" />
<description>
Returns current active tablet driver name.
[b]Note:[/b] This method is implemented on Windows.
</description>
</method>
<method name="tablet_get_driver_count" qualifiers="const">
<return type="int" />
<description>
Returns the total number of available tablet drivers.
[b]Note:[/b] This method is implemented on Windows.
</description>
</method>
<method name="tablet_get_driver_name" qualifiers="const">
<return type="String" />
<argument index="0" name="idx" type="int" />
<description>
Returns the tablet driver name for the given index.
[b]Note:[/b] This method is implemented on Windows.
</description>
</method>
<method name="tablet_set_current_driver">
<return type="void" />
<argument index="0" name="name" type="String" />
<description>
Set active tablet driver name.
[b]Note:[/b] This method is implemented on Windows.
</description>
</method>
<method name="virtual_keyboard_get_height" qualifiers="const">
<return type="int" />
<description>
Returns the on-screen keyboard's height in pixels. Returns 0 if there is no keyboard or if it is currently hidden.
</description>
</method>
<method name="virtual_keyboard_hide">
<return type="void" />
<description>
Hides the virtual keyboard if it is shown, does nothing otherwise.
</description>
</method>
<method name="virtual_keyboard_show">
<return type="void" />
<argument index="0" name="existing_text" type="String" />
<argument index="1" name="position" type="Rect2" default="Rect2(0, 0, 0, 0)" />
<argument index="2" name="multiline" type="bool" default="false" />
<argument index="3" name="max_length" type="int" default="-1" />
<argument index="4" name="cursor_start" type="int" default="-1" />
<argument index="5" name="cursor_end" type="int" default="-1" />
<description>
Shows the virtual keyboard if the platform has one.
[code]existing_text[/code] parameter is useful for implementing your own [LineEdit] or [TextEdit], as it tells the virtual keyboard what text has already been typed (the virtual keyboard uses it for auto-correct and predictions).
[code]position[/code] parameter is the screen space [Rect2] of the edited text.
[code]multiline[/code] parameter needs to be set to [code]true[/code] to be able to enter multiple lines of text, as in [TextEdit].
[code]max_length[/code] limits the number of characters that can be entered if different from [code]-1[/code].
[code]cursor_start[/code] can optionally define the current text cursor position if [code]cursor_end[/code] is not set.
[code]cursor_start[/code] and [code]cursor_end[/code] can optionally define the current text selection.
[b]Note:[/b] This method is implemented on Android, iOS and UWP.
</description>
</method>
<method name="window_attach_instance_id">
<return type="void" />
<argument index="0" name="instance_id" type="int" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_can_draw" qualifiers="const">
<return type="bool" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_active_popup" qualifiers="const">
<return type="int" />
<description>
Returns ID of the active popup window, or [constant INVALID_WINDOW_ID] if there is none.
</description>
</method>
<method name="window_get_attached_instance_id" qualifiers="const">
<return type="int" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_current_screen" qualifiers="const">
<return type="int" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_flag" qualifiers="const">
<return type="bool" />
<argument index="0" name="flag" type="int" enum="DisplayServer.WindowFlags" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Returns the current value of the given window's [code]flag[/code].
</description>
</method>
<method name="window_get_max_size" qualifiers="const">
<return type="Vector2i" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_min_size" qualifiers="const">
<return type="Vector2i" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_mode" qualifiers="const">
<return type="int" enum="DisplayServer.WindowMode" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
Returns the mode of the given window.
</description>
</method>
<method name="window_get_native_handle" qualifiers="const">
<return type="int" />
<argument index="0" name="handle_type" type="int" enum="DisplayServer.HandleType" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Returns internal structure pointers for use in plugins.
[b]Note:[/b] This method is implemented on Android, Linux, macOS and Windows.
</description>
</method>
<method name="window_get_popup_safe_rect" qualifiers="const">
<return type="Rect2i" />
<argument index="0" name="window" type="int" />
<description>
Returns the bounding box of control, or menu item that was used to open the popup window, in the screen coordinate system.
</description>
</method>
<method name="window_get_position" qualifiers="const">
<return type="Vector2i" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
Returns the position of the given window to on the screen.
</description>
</method>
<method name="window_get_real_size" qualifiers="const">
<return type="Vector2i" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_size" qualifiers="const">
<return type="Vector2i" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_vsync_mode" qualifiers="const">
<return type="int" enum="DisplayServer.VSyncMode" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
Returns the VSync mode of the given window.
</description>
</method>
<method name="window_move_to_foreground">
<return type="void" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_request_attention">
<return type="void" />
<argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_current_screen">
<return type="void" />
<argument index="0" name="screen" type="int" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_drop_files_callback">
<return type="void" />
<argument index="0" name="callback" type="Callable" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_exclusive">
<return type="void" />
<argument index="0" name="window_id" type="int" />
<argument index="1" name="exclusive" type="bool" />
<description>
If set to [code]true[/code], this window will always stay on top of its parent window, parent window will ignore input while this window is opened.
[b]Note:[/b] On macOS, exclusive windows are confined to the same space (virtual desktop or screen) as the parent window.
[b]Note:[/b] This method is implemented on macOS and Windows.
</description>
</method>
<method name="window_set_flag">
<return type="void" />
<argument index="0" name="flag" type="int" enum="DisplayServer.WindowFlags" />
<argument index="1" name="enabled" type="bool" />
<argument index="2" name="window_id" type="int" default="0" />
<description>
Enables or disables the given window's given [code]flag[/code]. See [enum WindowFlags] for possible values and their behavior.
</description>
</method>
<method name="window_set_ime_active">
<return type="void" />
<argument index="0" name="active" type="bool" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_ime_position">
<return type="void" />
<argument index="0" name="position" type="Vector2i" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_input_event_callback">
<return type="void" />
<argument index="0" name="callback" type="Callable" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_input_text_callback">
<return type="void" />
<argument index="0" name="callback" type="Callable" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_max_size">
<return type="void" />
<argument index="0" name="max_size" type="Vector2i" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_min_size">
<return type="void" />
<argument index="0" name="min_size" type="Vector2i" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Sets the minimum size for the given window to [code]min_size[/code] (in pixels).
[b]Note:[/b] By default, the main window has a minimum size of [code]Vector2i(64, 64)[/code]. This prevents issues that can arise when the window is resized to a near-zero size.
</description>
</method>
<method name="window_set_mode">
<return type="void" />
<argument index="0" name="mode" type="int" enum="DisplayServer.WindowMode" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Sets window mode for the given window to [code]mode[/code]. See [enum WindowMode] for possible values and how each mode behaves.
[b]Note:[/b] Setting the window to fullscreen forcibly sets the borderless flag to [code]true[/code], so make sure to set it back to [code]false[/code] when not wanted.
</description>
</method>
<method name="window_set_mouse_passthrough">
<return type="void" />
<argument index="0" name="region" type="PackedVector2Array" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Sets a polygonal region of the window which accepts mouse events. Mouse events outside the region will be passed through.
Passing an empty array will disable passthrough support (all mouse events will be intercepted by the window, which is the default behavior).
[codeblocks]
[gdscript]
# Set region, using Path2D node.
DisplayServer.window_set_mouse_passthrough($Path2D.curve.get_baked_points())
# Set region, using Polygon2D node.
DisplayServer.window_set_mouse_passthrough($Polygon2D.polygon)
# Reset region to default.
DisplayServer.window_set_mouse_passthrough([])
[/gdscript]
[csharp]
// Set region, using Path2D node.
DisplayServer.WindowSetMousePassthrough(GetNode&lt;Path2D&gt;("Path2D").Curve.GetBakedPoints());
// Set region, using Polygon2D node.
DisplayServer.WindowSetMousePassthrough(GetNode&lt;Polygon2D&gt;("Polygon2D").Polygon);
// Reset region to default.
DisplayServer.WindowSetMousePassthrough(new Vector2[] {});
[/csharp]
[/codeblocks]
[b]Note:[/b] On Windows, the portion of a window that lies outside the region is not drawn, while on Linux and macOS it is.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="window_set_popup_safe_rect">
<return type="void" />
<argument index="0" name="window" type="int" />
<argument index="1" name="rect" type="Rect2i" />
<description>
Sets the bounding box of control, or menu item that was used to open the popup window, in the screen coordinate system. Clicking this area will not auto-close this popup.
</description>
</method>
<method name="window_set_position">
<return type="void" />
<argument index="0" name="position" type="Vector2i" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Sets the position of the given window to [code]position[/code].
</description>
</method>
<method name="window_set_rect_changed_callback">
<return type="void" />
<argument index="0" name="callback" type="Callable" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_size">
<return type="void" />
<argument index="0" name="size" type="Vector2i" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Sets the size of the given window to [code]size[/code].
</description>
</method>
<method name="window_set_title">
<return type="void" />
<argument index="0" name="title" type="String" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Sets the title of the given window to [code]title[/code].
</description>
</method>
<method name="window_set_transient">
<return type="void" />
<argument index="0" name="window_id" type="int" />
<argument index="1" name="parent_window_id" type="int" />
<description>
</description>
</method>
<method name="window_set_vsync_mode">
<return type="void" />
<argument index="0" name="vsync_mode" type="int" enum="DisplayServer.VSyncMode" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
Sets the VSync mode of the given window.
See [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application.
Depending on the platform and used renderer, the engine will fall back to [constant VSYNC_ENABLED], if the desired mode is not supported.
</description>
</method>
<method name="window_set_window_event_callback">
<return type="void" />
<argument index="0" name="callback" type="Callable" />
<argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
</methods>
<constants>
<constant name="FEATURE_GLOBAL_MENU" value="0" enum="Feature">
</constant>
<constant name="FEATURE_SUBWINDOWS" value="1" enum="Feature">
</constant>
<constant name="FEATURE_TOUCHSCREEN" value="2" enum="Feature">
</constant>
<constant name="FEATURE_MOUSE" value="3" enum="Feature">
</constant>
<constant name="FEATURE_MOUSE_WARP" value="4" enum="Feature">
</constant>
<constant name="FEATURE_CLIPBOARD" value="5" enum="Feature">
</constant>
<constant name="FEATURE_VIRTUAL_KEYBOARD" value="6" enum="Feature">
</constant>
<constant name="FEATURE_CURSOR_SHAPE" value="7" enum="Feature">
</constant>
<constant name="FEATURE_CUSTOM_CURSOR_SHAPE" value="8" enum="Feature">
</constant>
<constant name="FEATURE_NATIVE_DIALOG" value="9" enum="Feature">
</constant>
<constant name="FEATURE_IME" value="10" enum="Feature">
</constant>
<constant name="FEATURE_WINDOW_TRANSPARENCY" value="11" enum="Feature">
</constant>
<constant name="FEATURE_HIDPI" value="12" enum="Feature">
</constant>
<constant name="FEATURE_ICON" value="13" enum="Feature">
</constant>
<constant name="FEATURE_NATIVE_ICON" value="14" enum="Feature">
</constant>
<constant name="FEATURE_ORIENTATION" value="15" enum="Feature">
</constant>
<constant name="FEATURE_SWAP_BUFFERS" value="16" enum="Feature">
</constant>
<constant name="FEATURE_CLIPBOARD_PRIMARY" value="18" enum="Feature">
</constant>
<constant name="MOUSE_MODE_VISIBLE" value="0" enum="MouseMode">
Makes the mouse cursor visible if it is hidden.
</constant>
<constant name="MOUSE_MODE_HIDDEN" value="1" enum="MouseMode">
Makes the mouse cursor hidden if it is visible.
</constant>
<constant name="MOUSE_MODE_CAPTURED" value="2" enum="MouseMode">
Captures the mouse. The mouse will be hidden and its position locked at the center of the screen.
[b]Note:[/b] If you want to process the mouse's movement in this mode, you need to use [member InputEventMouseMotion.relative].
</constant>
<constant name="MOUSE_MODE_CONFINED" value="3" enum="MouseMode">
Confines the mouse cursor to the game window, and make it visible.
</constant>
<constant name="MOUSE_MODE_CONFINED_HIDDEN" value="4" enum="MouseMode">
Confines the mouse cursor to the game window, and make it hidden.
</constant>
<constant name="SCREEN_OF_MAIN_WINDOW" value="-1">
</constant>
<constant name="MAIN_WINDOW_ID" value="0">
</constant>
<constant name="INVALID_WINDOW_ID" value="-1">
</constant>
<constant name="SCREEN_LANDSCAPE" value="0" enum="ScreenOrientation">
</constant>
<constant name="SCREEN_PORTRAIT" value="1" enum="ScreenOrientation">
</constant>
<constant name="SCREEN_REVERSE_LANDSCAPE" value="2" enum="ScreenOrientation">
</constant>
<constant name="SCREEN_REVERSE_PORTRAIT" value="3" enum="ScreenOrientation">
</constant>
<constant name="SCREEN_SENSOR_LANDSCAPE" value="4" enum="ScreenOrientation">
</constant>
<constant name="SCREEN_SENSOR_PORTRAIT" value="5" enum="ScreenOrientation">
</constant>
<constant name="SCREEN_SENSOR" value="6" enum="ScreenOrientation">
</constant>
<constant name="CURSOR_ARROW" value="0" enum="CursorShape">
</constant>
<constant name="CURSOR_IBEAM" value="1" enum="CursorShape">
</constant>
<constant name="CURSOR_POINTING_HAND" value="2" enum="CursorShape">
</constant>
<constant name="CURSOR_CROSS" value="3" enum="CursorShape">
</constant>
<constant name="CURSOR_WAIT" value="4" enum="CursorShape">
</constant>
<constant name="CURSOR_BUSY" value="5" enum="CursorShape">
</constant>
<constant name="CURSOR_DRAG" value="6" enum="CursorShape">
</constant>
<constant name="CURSOR_CAN_DROP" value="7" enum="CursorShape">
</constant>
<constant name="CURSOR_FORBIDDEN" value="8" enum="CursorShape">
</constant>
<constant name="CURSOR_VSIZE" value="9" enum="CursorShape">
</constant>
<constant name="CURSOR_HSIZE" value="10" enum="CursorShape">
</constant>
<constant name="CURSOR_BDIAGSIZE" value="11" enum="CursorShape">
</constant>
<constant name="CURSOR_FDIAGSIZE" value="12" enum="CursorShape">
</constant>
<constant name="CURSOR_MOVE" value="13" enum="CursorShape">
</constant>
<constant name="CURSOR_VSPLIT" value="14" enum="CursorShape">
</constant>
<constant name="CURSOR_HSPLIT" value="15" enum="CursorShape">
</constant>
<constant name="CURSOR_HELP" value="16" enum="CursorShape">
</constant>
<constant name="CURSOR_MAX" value="17" enum="CursorShape">
</constant>
<constant name="WINDOW_MODE_WINDOWED" value="0" enum="WindowMode">
</constant>
<constant name="WINDOW_MODE_MINIMIZED" value="1" enum="WindowMode">
</constant>
<constant name="WINDOW_MODE_MAXIMIZED" value="2" enum="WindowMode">
</constant>
<constant name="WINDOW_MODE_FULLSCREEN" value="3" enum="WindowMode">
Fullscreen window mode. Note that this is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless window is used to emulate fullscreen. On macOS, a new desktop is used to display the running project.
Regardless of the platform, enabling fullscreen will change the window size to match the monitor's size. Therefore, make sure your project supports [url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]multiple resolutions[/url] when enabling fullscreen mode.
</constant>
<constant name="WINDOW_MODE_EXCLUSIVE_FULLSCREEN" value="4" enum="WindowMode">
Exclusive fullscreen window mode. This mode is implemented on Windows only. On other platforms, it is equivalent to [constant WINDOW_MODE_FULLSCREEN].
Only one window in exclusive fullscreen mode can be visible on a given screen at a time. If multiple windows are in exclusive fullscreen mode for the same screen, the last one being set to this mode takes precedence.
Regardless of the platform, enabling fullscreen will change the window size to match the monitor's size. Therefore, make sure your project supports [url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]multiple resolutions[/url] when enabling fullscreen mode.
</constant>
<constant name="WINDOW_FLAG_RESIZE_DISABLED" value="0" enum="WindowFlags">
Window can't be resizing by dragging its resize grip. It's still possible to resize the window using [method window_set_size]. This flag is ignored for full screen windows.
</constant>
<constant name="WINDOW_FLAG_BORDERLESS" value="1" enum="WindowFlags">
Window do not have native title bar and other decorations. This flag is ignored for full-screen windows.
</constant>
<constant name="WINDOW_FLAG_ALWAYS_ON_TOP" value="2" enum="WindowFlags">
Window is floating above other regular windows. This flag is ignored for full-screen windows.
</constant>
<constant name="WINDOW_FLAG_TRANSPARENT" value="3" enum="WindowFlags">
Window is will be destroyed with its transient parent and displayed on top of non-exclusive full-screen parent window. Transient windows can't enter full-screen mode.
</constant>
<constant name="WINDOW_FLAG_NO_FOCUS" value="4" enum="WindowFlags">
Window can't be focused. No-focus window will ignore all input, except mouse clicks.
</constant>
<constant name="WINDOW_FLAG_POPUP" value="5" enum="WindowFlags">
Window is part of menu or [OptionButton] dropdown. This flag can't be changed when window is visible. An active popup window will exclusivly receive all input, without stealing focus from its parent. Popup windows are automatically closed when uses click outside it, or when an application is switched. Popup window must have [constant WINDOW_FLAG_TRANSPARENT] set.
</constant>
<constant name="WINDOW_FLAG_MAX" value="6" enum="WindowFlags">
</constant>
<constant name="WINDOW_EVENT_MOUSE_ENTER" value="0" enum="WindowEvent">
</constant>
<constant name="WINDOW_EVENT_MOUSE_EXIT" value="1" enum="WindowEvent">
</constant>
<constant name="WINDOW_EVENT_FOCUS_IN" value="2" enum="WindowEvent">
</constant>
<constant name="WINDOW_EVENT_FOCUS_OUT" value="3" enum="WindowEvent">
</constant>
<constant name="WINDOW_EVENT_CLOSE_REQUEST" value="4" enum="WindowEvent">
</constant>
<constant name="WINDOW_EVENT_GO_BACK_REQUEST" value="5" enum="WindowEvent">
</constant>
<constant name="WINDOW_EVENT_DPI_CHANGE" value="6" enum="WindowEvent">
</constant>
<constant name="VSYNC_DISABLED" value="0" enum="VSyncMode">
No vertical synchronization, which means the engine will display frames as fast as possible (tearing may be visible).
</constant>
<constant name="VSYNC_ENABLED" value="1" enum="VSyncMode">
Default vertical synchronization mode, the image is displayed only on vertical blanking intervals (no tearing is visible).
</constant>
<constant name="VSYNC_ADAPTIVE" value="2" enum="VSyncMode">
Behaves like [constant VSYNC_DISABLED] when the framerate drops below the screen's refresh rate to reduce stuttering (tearing may be visible), otherwise vertical synchronization is enabled to avoid tearing.
</constant>
<constant name="VSYNC_MAILBOX" value="3" enum="VSyncMode">
Displays the most recent image in the queue on vertical blanking intervals, while rendering to the other images (no tearing is visible).
Although not guaranteed, the images can be rendered as fast as possible, which may reduce input lag.
</constant>
<constant name="DISPLAY_HANDLE" value="0" enum="HandleType">
Display handle:
- Linux: [code]X11::Display*[/code] for the display.
</constant>
<constant name="WINDOW_HANDLE" value="1" enum="HandleType">
Window handle:
- Windows: [code]HWND[/code] for the window.
- Linux: [code]X11::Window*[/code] for the window.
- MacOS: [code]NSWindow*[/code] for the window.
- iOS: [code]UIViewController*[/code] for the view controller.
- Android: [code]jObject[/code] for the activity.
</constant>
<constant name="WINDOW_VIEW" value="2" enum="HandleType">
Window view:
- MacOS: [code]NSView*[/code] for the window main view.
- iOS: [code]UIView*[/code] for the window main view.
</constant>
</constants>
</class>