summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/classes/CodeHighlighter.xml145
-rw-r--r--doc/classes/CollisionObject2D.xml2
-rw-r--r--doc/classes/DisplayServer.xml2
-rw-r--r--doc/classes/EditorSyntaxHighlighter.xml31
-rw-r--r--doc/classes/ProjectSettings.xml4
-rw-r--r--doc/classes/ScriptEditor.xml28
-rw-r--r--doc/classes/ScriptEditorBase.xml67
-rw-r--r--doc/classes/SyntaxHighlighter.xml53
-rw-r--r--doc/classes/TextEdit.xml68
-rw-r--r--doc/classes/VehicleBody3D.xml1
-rw-r--r--doc/classes/VehicleWheel3D.xml1
-rw-r--r--editor/animation_track_editor.cpp4
-rw-r--r--editor/debugger/editor_debugger_tree.cpp2
-rw-r--r--editor/debugger/script_editor_debugger.cpp4
-rw-r--r--editor/dependency_editor.cpp8
-rw-r--r--editor/editor_audio_buses.cpp6
-rw-r--r--editor/editor_autoload_settings.cpp2
-rw-r--r--editor/editor_dir_dialog.cpp2
-rw-r--r--editor/editor_feature_profile.cpp4
-rw-r--r--editor/editor_file_dialog.cpp4
-rw-r--r--editor/editor_file_dialog.h1
-rw-r--r--editor/editor_node.cpp16
-rw-r--r--editor/editor_properties.cpp10
-rw-r--r--editor/editor_sub_scene.cpp2
-rw-r--r--editor/export_template_manager.cpp2
-rw-r--r--editor/find_in_files.cpp2
-rw-r--r--editor/inspector_dock.cpp2
-rw-r--r--editor/localization_editor.cpp10
-rw-r--r--editor/plugins/animation_blend_space_1d_editor.cpp2
-rw-r--r--editor/plugins/animation_blend_space_2d_editor.cpp2
-rw-r--r--editor/plugins/animation_blend_tree_editor_plugin.cpp2
-rw-r--r--editor/plugins/animation_player_editor_plugin.cpp4
-rw-r--r--editor/plugins/animation_state_machine_editor.cpp2
-rw-r--r--editor/plugins/asset_library_editor_plugin.cpp2
-rw-r--r--editor/plugins/baked_lightmap_editor_plugin.cpp2
-rw-r--r--editor/plugins/cpu_particles_2d_editor_plugin.cpp2
-rw-r--r--editor/plugins/cpu_particles_3d_editor_plugin.cpp2
-rw-r--r--editor/plugins/gi_probe_editor_plugin.cpp2
-rw-r--r--editor/plugins/gpu_particles_2d_editor_plugin.cpp2
-rw-r--r--editor/plugins/gpu_particles_3d_editor_plugin.cpp2
-rw-r--r--editor/plugins/mesh_library_editor_plugin.cpp2
-rw-r--r--editor/plugins/multimesh_editor_plugin.cpp2
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.cpp3
-rw-r--r--editor/plugins/script_editor_plugin.cpp14
-rw-r--r--editor/plugins/shader_editor_plugin.cpp2
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp5
-rw-r--r--editor/plugins/tile_set_editor_plugin.cpp2
-rw-r--r--editor/project_export.cpp10
-rw-r--r--editor/project_manager.cpp6
-rw-r--r--editor/property_editor.cpp12
-rw-r--r--editor/quick_open.cpp271
-rw-r--r--editor/quick_open.h31
-rw-r--r--editor/reparent_dialog.cpp8
-rw-r--r--editor/scene_tree_dock.cpp5
-rw-r--r--editor/scene_tree_editor.cpp5
-rw-r--r--editor/scene_tree_editor.h1
-rw-r--r--editor/script_create_dialog.cpp2
-rw-r--r--misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@2x.pngbin21443 -> 14779 bytes
-rw-r--r--misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@3x.pngbin21443 -> 14779 bytes
-rw-r--r--modules/gdnative/gdnative_library_editor_plugin.cpp2
-rw-r--r--modules/gdnative/nativescript/api_generator.cpp3
-rw-r--r--platform/android/display_server_android.cpp2
-rw-r--r--platform/osx/display_server_osx.h2
-rw-r--r--platform/osx/display_server_osx.mm24
-rw-r--r--platform/uwp/os_uwp.h2
-rw-r--r--platform/windows/display_server_windows.cpp2
-rw-r--r--platform/windows/display_server_windows.h2
-rw-r--r--scene/3d/physics_body_3d.cpp2
-rw-r--r--scene/gui/dialogs.cpp8
-rw-r--r--scene/gui/dialogs.h4
-rw-r--r--scene/gui/file_dialog.cpp4
-rw-r--r--scene/gui/file_dialog.h1
-rw-r--r--scene/gui/rich_text_label.cpp2
-rw-r--r--scene/register_scene_types.cpp2
-rw-r--r--servers/display_server.cpp4
-rw-r--r--servers/display_server.h2
-rw-r--r--servers/physics_3d/body_3d_sw.cpp2
-rw-r--r--servers/rendering/shader_language.cpp12
78 files changed, 635 insertions, 337 deletions
diff --git a/doc/classes/CodeHighlighter.xml b/doc/classes/CodeHighlighter.xml
new file mode 100644
index 0000000000..7a1dad547b
--- /dev/null
+++ b/doc/classes/CodeHighlighter.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="CodeHighlighter" inherits="SyntaxHighlighter" version="4.0">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="add_color_region">
+ <return type="void">
+ </return>
+ <argument index="0" name="p_start_key" type="String">
+ </argument>
+ <argument index="1" name="p_end_key" type="String">
+ </argument>
+ <argument index="2" name="p_color" type="Color">
+ </argument>
+ <argument index="3" name="p_line_only" type="bool" default="false">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="add_keyword_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="keyword" type="String">
+ </argument>
+ <argument index="1" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="add_member_keyword_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="member_keyword" type="String">
+ </argument>
+ <argument index="1" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="clear_color_regions">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="clear_keyword_colors">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="clear_member_keyword_colors">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="get_keyword_color" qualifiers="const">
+ <return type="Color">
+ </return>
+ <argument index="0" name="keyword" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="get_member_keyword_color" qualifiers="const">
+ <return type="Color">
+ </return>
+ <argument index="0" name="member_keyword" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="has_color_region" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="p_start_key" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="has_keyword_color" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="keyword" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="has_member_keyword_color" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="member_keyword" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="remove_color_region">
+ <return type="void">
+ </return>
+ <argument index="0" name="p_start_key" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="remove_keyword_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="keyword" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="remove_member_keyword_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="member_keyword" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ </methods>
+ <members>
+ <member name="color_regions" type="Dictionary" setter="set_color_regions" getter="get_color_regions" default="{}">
+ </member>
+ <member name="function_color" type="Color" setter="set_function_color" getter="get_function_color" default="Color( 0, 0, 0, 1 )">
+ </member>
+ <member name="keyword_colors" type="Dictionary" setter="set_keyword_colors" getter="get_keyword_colors" default="{}">
+ </member>
+ <member name="member_keyword_colors" type="Dictionary" setter="set_member_keyword_colors" getter="get_member_keyword_colors" default="{}">
+ </member>
+ <member name="member_variable_color" type="Color" setter="set_member_variable_color" getter="get_member_variable_color" default="Color( 0, 0, 0, 1 )">
+ </member>
+ <member name="number_color" type="Color" setter="set_number_color" getter="get_number_color" default="Color( 0, 0, 0, 1 )">
+ </member>
+ <member name="symbol_color" type="Color" setter="set_symbol_color" getter="get_symbol_color" default="Color( 0, 0, 0, 1 )">
+ </member>
+ </members>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml
index c2dd48108f..bf82e921fb 100644
--- a/doc/classes/CollisionObject2D.xml
+++ b/doc/classes/CollisionObject2D.xml
@@ -216,7 +216,7 @@
</method>
</methods>
<members>
- <member name="input_pickable" type="bool" setter="set_pickable" getter="is_pickable">
+ <member name="input_pickable" type="bool" setter="set_pickable" getter="is_pickable" default="true">
If [code]true[/code], this object is pickable. A pickable object can detect the mouse pointer entering/leaving, and if the mouse is inside it, report input events.
</member>
</members>
diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml
index d118cf8205..49af8d7de2 100644
--- a/doc/classes/DisplayServer.xml
+++ b/doc/classes/DisplayServer.xml
@@ -139,7 +139,7 @@
<description>
</description>
</method>
- <method name="get_swap_ok_cancel">
+ <method name="get_swap_cancel_ok">
<return type="bool">
</return>
<description>
diff --git a/doc/classes/EditorSyntaxHighlighter.xml b/doc/classes/EditorSyntaxHighlighter.xml
new file mode 100644
index 0000000000..103d95e1d6
--- /dev/null
+++ b/doc/classes/EditorSyntaxHighlighter.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EditorSyntaxHighlighter" inherits="SyntaxHighlighter" version="4.0">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="_get_name" qualifiers="virtual">
+ <return type="String">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="_get_supported_extentions" qualifiers="virtual">
+ <return type="Array">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="_get_supported_languages" qualifiers="virtual">
+ <return type="Array">
+ </return>
+ <description>
+ </description>
+ </method>
+ </methods>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index c8427ac61f..e255ce2e1a 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -472,8 +472,8 @@
<member name="gui/common/default_scroll_deadzone" type="int" setter="" getter="" default="0">
Default value for [member ScrollContainer.scroll_deadzone], which will be used for all [ScrollContainer]s unless overridden.
</member>
- <member name="gui/common/swap_ok_cancel" type="bool" setter="" getter="" default="false">
- If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and UWP to follow interface conventions.
+ <member name="gui/common/swap_cancel_ok" type="bool" setter="" getter="" default="false">
+ If [code]true[/code], swaps Cancel and OK buttons in dialogs on Windows and UWP to follow interface conventions.
</member>
<member name="gui/common/text_edit_undo_stack_max_size" type="int" setter="" getter="" default="1024">
</member>
diff --git a/doc/classes/ScriptEditor.xml b/doc/classes/ScriptEditor.xml
index f0ad781f77..20b0750431 100644
--- a/doc/classes/ScriptEditor.xml
+++ b/doc/classes/ScriptEditor.xml
@@ -33,6 +33,12 @@
<description>
</description>
</method>
+ <method name="get_current_editor" qualifiers="const">
+ <return type="ScriptEditorBase">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_current_script">
<return type="Script">
</return>
@@ -50,6 +56,12 @@
<description>
</description>
</method>
+ <method name="get_open_script_editors" qualifiers="const">
+ <return type="Array">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_open_scripts" qualifiers="const">
<return type="Array">
</return>
@@ -76,6 +88,22 @@
<description>
</description>
</method>
+ <method name="register_syntax_highlighter">
+ <return type="void">
+ </return>
+ <argument index="0" name="syntax_highlighter" type="EditorSyntaxHighlighter">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="unregister_syntax_highlighter">
+ <return type="void">
+ </return>
+ <argument index="0" name="syntax_highlighter" type="EditorSyntaxHighlighter">
+ </argument>
+ <description>
+ </description>
+ </method>
</methods>
<signals>
<signal name="editor_script_changed">
diff --git a/doc/classes/ScriptEditorBase.xml b/doc/classes/ScriptEditorBase.xml
new file mode 100644
index 0000000000..9968ae06c3
--- /dev/null
+++ b/doc/classes/ScriptEditorBase.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ScriptEditorBase" inherits="VBoxContainer" version="4.0">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="add_syntax_highlighter" qualifiers="virtual">
+ <return type="void">
+ </return>
+ <argument index="0" name="highlighter" type="Object">
+ </argument>
+ <description>
+ </description>
+ </method>
+ </methods>
+ <signals>
+ <signal name="edited_script_changed">
+ <description>
+ </description>
+ </signal>
+ <signal name="go_to_help">
+ <argument index="0" name="what" type="String">
+ </argument>
+ <description>
+ </description>
+ </signal>
+ <signal name="name_changed">
+ <description>
+ </description>
+ </signal>
+ <signal name="replace_in_files_requested">
+ <argument index="0" name="text" type="String">
+ </argument>
+ <description>
+ </description>
+ </signal>
+ <signal name="request_help">
+ <argument index="0" name="topic" type="String">
+ </argument>
+ <description>
+ </description>
+ </signal>
+ <signal name="request_open_script_at_line">
+ <argument index="0" name="script" type="Object">
+ </argument>
+ <argument index="1" name="line" type="int">
+ </argument>
+ <description>
+ </description>
+ </signal>
+ <signal name="request_save_history">
+ <description>
+ </description>
+ </signal>
+ <signal name="search_in_files_requested">
+ <argument index="0" name="text" type="String">
+ </argument>
+ <description>
+ </description>
+ </signal>
+ </signals>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/SyntaxHighlighter.xml b/doc/classes/SyntaxHighlighter.xml
new file mode 100644
index 0000000000..2d6e3de02a
--- /dev/null
+++ b/doc/classes/SyntaxHighlighter.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="SyntaxHighlighter" inherits="Resource" version="4.0">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="_get_line_syntax_highlighting" qualifiers="virtual">
+ <return type="Dictionary">
+ </return>
+ <argument index="0" name="p_line" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="_update_cache" qualifiers="virtual">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="clear_highlighting_cache">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="get_line_syntax_highlighting">
+ <return type="Dictionary">
+ </return>
+ <argument index="0" name="p_line" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="get_text_edit">
+ <return type="TextEdit">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="update_cache">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ </methods>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index b7b4278da0..b7240655af 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -9,32 +9,6 @@
<tutorials>
</tutorials>
<methods>
- <method name="add_color_region">
- <return type="void">
- </return>
- <argument index="0" name="begin_key" type="String">
- </argument>
- <argument index="1" name="end_key" type="String">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
- <argument index="3" name="line_only" type="bool" default="false">
- </argument>
- <description>
- Adds color region (given the delimiters) and its colors.
- </description>
- </method>
- <method name="add_keyword_color">
- <return type="void">
- </return>
- <argument index="0" name="keyword" type="String">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <description>
- Adds a [code]keyword[/code] and its [Color].
- </description>
- </method>
<method name="can_fold" qualifiers="const">
<return type="bool">
</return>
@@ -51,13 +25,6 @@
Centers the viewport on the line the editing cursor is at. This also resets the [member scroll_horizontal] value to [code]0[/code].
</description>
</method>
- <method name="clear_colors">
- <return type="void">
- </return>
- <description>
- Clears all custom syntax coloring information previously added with [method add_color_region] or [method add_keyword_color].
- </description>
- </method>
<method name="clear_undo_history">
<return type="void">
</return>
@@ -152,15 +119,6 @@
Returns an array containing the line number of each breakpoint.
</description>
</method>
- <method name="get_keyword_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="keyword" type="String">
- </argument>
- <description>
- Returns the [Color] of the specified [code]keyword[/code].
- </description>
- </method>
<method name="get_line" qualifiers="const">
<return type="String">
</return>
@@ -226,15 +184,6 @@
Returns a [String] text with the word under the mouse cursor location.
</description>
</method>
- <method name="has_keyword_color" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="keyword" type="String">
- </argument>
- <description>
- Returns whether the specified [code]keyword[/code] has a color set to it or not.
- </description>
- </method>
<method name="insert_text_at_cursor">
<return type="void">
</return>
@@ -473,8 +422,7 @@
<member name="smooth_scrolling" type="bool" setter="set_smooth_scroll_enable" getter="is_smooth_scroll_enabled" default="false">
If [code]true[/code], sets the [code]step[/code] of the scrollbars to [code]0.25[/code] which results in smoother scrolling.
</member>
- <member name="syntax_highlighting" type="bool" setter="set_syntax_coloring" getter="is_syntax_coloring_enabled" default="false">
- If [code]true[/code], any custom color properties that have been set for this [TextEdit] will be visible.
+ <member name="syntax_highlighter" type="SyntaxHighlighter" setter="set_syntax_highlighter" getter="get_syntax_highlighter">
</member>
<member name="text" type="String" setter="set_text" getter="get_text" default="&quot;&quot;">
String value of the [TextEdit].
@@ -508,6 +456,12 @@
Emitted when the info icon is clicked.
</description>
</signal>
+ <signal name="line_edited_from">
+ <argument index="0" name="line" type="int">
+ </argument>
+ <description>
+ </description>
+ </signal>
<signal name="request_completion">
<description>
</description>
@@ -627,8 +581,6 @@
<theme_item name="font_color_selected" type="Color" default="Color( 0, 0, 0, 1 )">
Sets the [Color] of the selected text. [member override_selected_font_color] has to be enabled.
</theme_item>
- <theme_item name="function_color" type="Color" default="Color( 0.4, 0.64, 0.81, 1 )">
- </theme_item>
<theme_item name="line_number_color" type="Color" default="Color( 0.67, 0.67, 0.67, 0.4 )">
Sets the [Color] of the line numbers. [member show_line_numbers] has to be enabled.
</theme_item>
@@ -638,13 +590,9 @@
<theme_item name="mark_color" type="Color" default="Color( 1, 0.4, 0.4, 0.4 )">
Sets the [Color] of marked text.
</theme_item>
- <theme_item name="member_variable_color" type="Color" default="Color( 0.9, 0.31, 0.35, 1 )">
- </theme_item>
<theme_item name="normal" type="StyleBox">
Sets the [StyleBox] of this [TextEdit].
</theme_item>
- <theme_item name="number_color" type="Color" default="Color( 0.92, 0.58, 0.2, 1 )">
- </theme_item>
<theme_item name="read_only" type="StyleBox">
Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled.
</theme_item>
@@ -655,8 +603,6 @@
</theme_item>
<theme_item name="space" type="Texture2D">
</theme_item>
- <theme_item name="symbol_color" type="Color" default="Color( 0.94, 0.94, 0.94, 1 )">
- </theme_item>
<theme_item name="tab" type="Texture2D">
Sets a custom [Texture2D] for tab text characters.
</theme_item>
diff --git a/doc/classes/VehicleBody3D.xml b/doc/classes/VehicleBody3D.xml
index b8b85ff605..5a2cce376e 100644
--- a/doc/classes/VehicleBody3D.xml
+++ b/doc/classes/VehicleBody3D.xml
@@ -6,6 +6,7 @@
<description>
This node implements all the physics logic needed to simulate a car. It is based on the raycast vehicle system commonly found in physics engines. You will need to add a [CollisionShape3D] for the main body of your vehicle and add [VehicleWheel3D] nodes for the wheels. You should also add a [MeshInstance3D] to this node for the 3D model of your car but this model should not include meshes for the wheels. You should control the vehicle by using the [member brake], [member engine_force], and [member steering] properties and not change the position or orientation of this node directly.
[b]Note:[/b] The origin point of your VehicleBody3D will determine the center of gravity of your vehicle so it is better to keep this low and move the [CollisionShape3D] and [MeshInstance3D] upwards.
+ [b]Note:[/b] This class has known issues and isn't designed to provide realistic 3D vehicle physics. If you want advanced vehicle physics, you will probably have to write your own physics integration using another [PhysicsBody3D] class.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/VehicleWheel3D.xml b/doc/classes/VehicleWheel3D.xml
index c71d797eff..97b2abfa92 100644
--- a/doc/classes/VehicleWheel3D.xml
+++ b/doc/classes/VehicleWheel3D.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
This node needs to be used as a child node of [VehicleBody3D] and simulates the behavior of one of its wheels. This node also acts as a collider to detect if the wheel is touching a surface.
+ [b]Note:[/b] This class has known issues and isn't designed to provide realistic 3D vehicle physics. If you want advanced vehicle physics, you will probably have to write your own physics integration using another [PhysicsBody3D] class.
</description>
<tutorials>
</tutorials>
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp
index 1d6770a32e..f3561dc03e 100644
--- a/editor/animation_track_editor.cpp
+++ b/editor/animation_track_editor.cpp
@@ -4370,7 +4370,7 @@ void AnimationTrackEditor::_add_track(int p_type) {
return;
}
adding_track_type = p_type;
- pick_track->popup_centered_ratio();
+ pick_track->popup_scenetree_dialog();
}
void AnimationTrackEditor::_new_track_property_selected(String p_name) {
@@ -5731,7 +5731,7 @@ AnimationTrackEditor::AnimationTrackEditor() {
pick_track = memnew(SceneTreeDialog);
add_child(pick_track);
- pick_track->set_title(TTR("Pick the node that will be animated:"));
+ pick_track->set_title(TTR("Pick a node to animate:"));
pick_track->connect("selected", callable_mp(this, &AnimationTrackEditor::_new_track_node_selected));
prop_selector = memnew(PropertySelector);
add_child(prop_selector);
diff --git a/editor/debugger/editor_debugger_tree.cpp b/editor/debugger/editor_debugger_tree.cpp
index 0b5f865a98..ebac9b3482 100644
--- a/editor/debugger/editor_debugger_tree.cpp
+++ b/editor/debugger/editor_debugger_tree.cpp
@@ -238,7 +238,7 @@ void EditorDebuggerTree::_item_menu_id_pressed(int p_option) {
file_dialog->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
}
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
} break;
case ITEM_MENU_COPY_NODE_PATH: {
String text = get_selected_path();
diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp
index a828e29558..49bf068be7 100644
--- a/editor/debugger/script_editor_debugger.cpp
+++ b/editor/debugger/script_editor_debugger.cpp
@@ -282,7 +282,7 @@ void ScriptEditorDebugger::_video_mem_export() {
file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
file_dialog->clear_filters();
file_dialog_purpose = SAVE_VRAM_CSV;
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
}
Size2 ScriptEditorDebugger::get_minimum_size() const {
@@ -944,7 +944,7 @@ void ScriptEditorDebugger::_export_csv() {
file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE);
file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
file_dialog_purpose = SAVE_MONITORS_CSV;
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
}
String ScriptEditorDebugger::get_var_value(const String &p_var) const {
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp
index c6977779bd..cbf39c209a 100644
--- a/editor/dependency_editor.cpp
+++ b/editor/dependency_editor.cpp
@@ -58,7 +58,7 @@ void DependencyEditor::_load_pressed(Object *p_item, int p_cell, int p_button) {
for (List<String>::Element *E = ext.front(); E; E = E->next()) {
search->add_filter("*" + E->get());
}
- search->popup_centered_ratio(0.65); // So it doesn't completely cover the dialog below it.
+ search->popup_file_dialog();
}
void DependencyEditor::_fix_and_find(EditorFileSystemDirectory *efsd, Map<String, Map<String, String>> &candidates) {
@@ -205,7 +205,7 @@ void DependencyEditor::edit(const String &p_path) {
set_title(TTR("Dependencies For:") + " " + p_path.get_file());
_update_list();
- popup_centered_ratio(0.7); // So it doesn't completely cover the dialog below it.
+ popup_centered_ratio(0.4);
if (EditorNode::get_singleton()->is_scene_open(p_path)) {
EditorNode::get_singleton()->show_warning(vformat(TTR("Scene '%s' is currently being edited.\nChanges will only take effect when reloaded."), p_path.get_file()));
@@ -323,7 +323,7 @@ void DependencyEditorOwners::show(const String &p_path) {
editing = p_path;
owners->clear();
_fill_owners(EditorFileSystem::get_singleton()->get_filesystem());
- popup_centered_ratio();
+ popup_centered_ratio(0.3);
set_title(TTR("Owners Of:") + " " + p_path.get_file());
}
@@ -714,7 +714,7 @@ void OrphanResourcesDialog::refresh() {
void OrphanResourcesDialog::show() {
refresh();
- popup_centered_ratio();
+ popup_centered_ratio(0.4);
}
void OrphanResourcesDialog::_find_to_delete(TreeItem *p_item, List<String> &paths) {
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp
index 669868c632..adb09532eb 100644
--- a/editor/editor_audio_buses.cpp
+++ b/editor/editor_audio_buses.cpp
@@ -1176,7 +1176,7 @@ void EditorAudioBuses::_save_as_layout() {
file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE);
file_dialog->set_title(TTR("Save Audio Bus Layout As..."));
file_dialog->set_current_path(edited_path);
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
new_layout = false;
}
@@ -1184,7 +1184,7 @@ void EditorAudioBuses::_new_layout() {
file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE);
file_dialog->set_title(TTR("Location for New Layout..."));
file_dialog->set_current_path(edited_path);
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
new_layout = true;
}
@@ -1192,7 +1192,7 @@ void EditorAudioBuses::_load_layout() {
file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
file_dialog->set_title(TTR("Open Audio Bus Layout"));
file_dialog->set_current_path(edited_path);
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
new_layout = false;
}
diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp
index 4cd4f68fa2..94887fb848 100644
--- a/editor/editor_autoload_settings.cpp
+++ b/editor/editor_autoload_settings.cpp
@@ -919,5 +919,5 @@ void EditorAutoloadSettings::_set_autoload_add_path(const String &p_text) {
}
void EditorAutoloadSettings::_browse_autoload_add_path() {
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
}
diff --git a/editor/editor_dir_dialog.cpp b/editor/editor_dir_dialog.cpp
index 3c1c3c8a86..206fdef7c9 100644
--- a/editor/editor_dir_dialog.cpp
+++ b/editor/editor_dir_dialog.cpp
@@ -182,7 +182,7 @@ EditorDirDialog::EditorDirDialog() {
tree->connect("item_activated", callable_mp(this, &EditorDirDialog::_item_activated));
- makedir = add_button(TTR("Create Folder"), DisplayServer::get_singleton()->get_swap_ok_cancel(), "makedir");
+ makedir = add_button(TTR("Create Folder"), DisplayServer::get_singleton()->get_swap_cancel_ok(), "makedir");
makedir->connect("pressed", callable_mp(this, &EditorDirDialog::_make_dir));
makedialog = memnew(ConfirmationDialog);
diff --git a/editor/editor_feature_profile.cpp b/editor/editor_feature_profile.cpp
index 0d349eb247..f68cc3b323 100644
--- a/editor/editor_feature_profile.cpp
+++ b/editor/editor_feature_profile.cpp
@@ -403,10 +403,10 @@ void EditorFeatureProfileManager::_profile_action(int p_action) {
_emit_current_profile_changed();
} break;
case PROFILE_IMPORT: {
- import_profiles->popup_centered_ratio();
+ import_profiles->popup_file_dialog();
} break;
case PROFILE_EXPORT: {
- export_profile->popup_centered_ratio();
+ export_profile->popup_file_dialog();
export_profile->set_current_file(_get_selected_profile() + ".profile");
} break;
case PROFILE_NEW: {
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index 50be291c91..85151c6d0a 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -50,6 +50,10 @@ EditorFileDialog::GetIconFunc EditorFileDialog::get_large_icon_func = nullptr;
EditorFileDialog::RegisterFunc EditorFileDialog::register_func = nullptr;
EditorFileDialog::RegisterFunc EditorFileDialog::unregister_func = nullptr;
+void EditorFileDialog::popup_file_dialog() {
+ popup_centered_clamped(Size2(1050, 700) * EDSCALE, 0.8);
+}
+
VBoxContainer *EditorFileDialog::get_vbox() {
return vbox;
}
diff --git a/editor/editor_file_dialog.h b/editor/editor_file_dialog.h
index 40906ab42b..df5b41ae1d 100644
--- a/editor/editor_file_dialog.h
+++ b/editor/editor_file_dialog.h
@@ -203,6 +203,7 @@ protected:
static void _bind_methods();
//bind helpers
public:
+ void popup_file_dialog();
void clear_filters();
void add_filter(const String &p_filter);
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index f68b5bf5fe..9c0efd0881 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -994,8 +994,8 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
}
file->set_current_path(existing);
}
- file->popup_centered_ratio();
file->set_title(TTR("Save Resource As..."));
+ file->popup_file_dialog();
}
void EditorNode::_menu_option(int p_option) {
@@ -2182,7 +2182,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
file->set_current_path(scene->get_filename());
};
file->set_title(p_option == FILE_OPEN_SCENE ? TTR("Open Scene") : TTR("Open Base Scene"));
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} break;
case FILE_QUICK_OPEN: {
@@ -2318,7 +2318,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
}
file->set_current_path(existing);
}
- file->popup_centered_ratio();
+ file->popup_file_dialog();
file->set_title(TTR("Save Scene As..."));
} break;
@@ -2357,7 +2357,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
file_export_lib->add_filter("*." + E->get());
}
- file_export_lib->popup_centered_ratio();
+ file_export_lib->popup_file_dialog();
file_export_lib->set_title(TTR("Export Mesh Library"));
} break;
@@ -2376,7 +2376,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
file_export_lib->add_filter("*." + E->get());
}
- file_export_lib->popup_centered_ratio();
+ file_export_lib->popup_file_dialog();
file_export_lib->set_title(TTR("Export Tile Set"));
} break;
@@ -2642,7 +2642,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
file->set_current_path(scene->get_filename());
};
file->set_title(TTR("Pick a Main Scene"));
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} break;
case HELP_SEARCH: {
@@ -6482,7 +6482,7 @@ EditorNode::EditorNode() {
confirmation->connect("confirmed", callable_mp(this, &EditorNode::_menu_confirm_current));
save_confirmation = memnew(ConfirmationDialog);
- save_confirmation->add_button(TTR("Don't Save"), DisplayServer::get_singleton()->get_swap_ok_cancel(), "discard");
+ save_confirmation->add_button(TTR("Don't Save"), DisplayServer::get_singleton()->get_swap_cancel_ok(), "discard");
gui_base->add_child(save_confirmation);
save_confirmation->connect("confirmed", callable_mp(this, &EditorNode::_menu_confirm_current));
save_confirmation->connect("custom_action", callable_mp(this, &EditorNode::_discard_changes));
@@ -6701,7 +6701,7 @@ EditorNode::EditorNode() {
open_imported = memnew(ConfirmationDialog);
open_imported->get_ok()->set_text(TTR("Open Anyway"));
- new_inherited_button = open_imported->add_button(TTR("New Inherited"), !DisplayServer::get_singleton()->get_swap_ok_cancel(), "inherit");
+ new_inherited_button = open_imported->add_button(TTR("New Inherited"), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "inherit");
open_imported->connect("confirmed", callable_mp(this, &EditorNode::_open_imported));
open_imported->connect("custom_action", callable_mp(this, &EditorNode::_inherit_imported));
gui_base->add_child(open_imported);
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index 48f1a1f134..c3f0d1b712 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -253,7 +253,7 @@ void EditorPropertyPath::_path_pressed() {
dialog->set_current_path(full_path);
}
- dialog->popup_centered_ratio();
+ dialog->popup_file_dialog();
}
void EditorPropertyPath::update_property() {
@@ -2207,7 +2207,7 @@ void EditorPropertyNodePath::_node_assign() {
add_child(scene_tree);
scene_tree->connect("selected", callable_mp(this, &EditorPropertyNodePath::_node_selected));
}
- scene_tree->popup_centered_ratio();
+ scene_tree->popup_scenetree_dialog();
}
void EditorPropertyNodePath::_node_clear() {
@@ -2343,7 +2343,7 @@ void EditorPropertyResource::_file_selected(const String &p_path) {
}
void EditorPropertyResource::_menu_option(int p_which) {
- // scene_tree->popup_centered_ratio();
+ //scene_tree->popup_scenetree_dialog();
switch (p_which) {
case OBJ_MENU_LOAD: {
if (!file) {
@@ -2369,7 +2369,7 @@ void EditorPropertyResource::_menu_option(int p_which) {
file->add_filter("*." + E->get() + " ; " + E->get().to_upper());
}
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} break;
case OBJ_MENU_EDIT: {
@@ -2507,7 +2507,7 @@ void EditorPropertyResource::_menu_option(int p_which) {
scene_tree->connect("selected", callable_mp(this, &EditorPropertyResource::_viewport_selected));
scene_tree->set_title(TTR("Pick a Viewport"));
}
- scene_tree->popup_centered_ratio();
+ scene_tree->popup_scenetree_dialog();
return;
}
diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp
index a9b1a28092..f794babc24 100644
--- a/editor/editor_sub_scene.cpp
+++ b/editor/editor_sub_scene.cpp
@@ -66,7 +66,7 @@ void EditorSubScene::_path_changed(const String &p_path) {
}
void EditorSubScene::_path_browse() {
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
}
void EditorSubScene::_notification(int p_what) {
diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp
index fb12c15913..84517f36ea 100644
--- a/editor/export_template_manager.cpp
+++ b/editor/export_template_manager.cpp
@@ -334,7 +334,7 @@ void ExportTemplateManager::popup_manager() {
}
void ExportTemplateManager::ok_pressed() {
- template_open->popup_centered_ratio();
+ template_open->popup_file_dialog();
}
void ExportTemplateManager::_http_download_mirror_completed(int p_status, int p_code, const PackedStringArray &headers, const PackedByteArray &p_data) {
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp
index 53c52b94cc..bd4bb57dcf 100644
--- a/editor/find_in_files.cpp
+++ b/editor/find_in_files.cpp
@@ -483,7 +483,7 @@ void FindInFilesDialog::_notification(int p_what) {
}
void FindInFilesDialog::_on_folder_button_pressed() {
- _folder_dialog->popup_centered_ratio();
+ _folder_dialog->popup_file_dialog();
}
void FindInFilesDialog::custom_action(const String &p_action) {
diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp
index 903d9a2d31..8f1b8838d8 100644
--- a/editor/inspector_dock.cpp
+++ b/editor/inspector_dock.cpp
@@ -150,7 +150,7 @@ void InspectorDock::_load_resource(const String &p_type) {
load_resource_dialog->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
}
- load_resource_dialog->popup_centered_ratio();
+ load_resource_dialog->popup_file_dialog();
}
void InspectorDock::_resource_file_selected(String p_file) {
diff --git a/editor/localization_editor.cpp b/editor/localization_editor.cpp
index 98b6d32ae3..6764f70d9b 100644
--- a/editor/localization_editor.cpp
+++ b/editor/localization_editor.cpp
@@ -82,7 +82,7 @@ void LocalizationEditor::_translation_add(const String &p_path) {
}
void LocalizationEditor::_translation_file_open() {
- translation_file_open->popup_centered_ratio();
+ translation_file_open->popup_file_dialog();
}
void LocalizationEditor::_translation_delete(Object *p_item, int p_column, int p_button) {
@@ -108,7 +108,7 @@ void LocalizationEditor::_translation_delete(Object *p_item, int p_column, int p
}
void LocalizationEditor::_translation_res_file_open() {
- translation_res_file_open_dialog->popup_centered_ratio();
+ translation_res_file_open_dialog->popup_file_dialog();
}
void LocalizationEditor::_translation_res_add(const String &p_path) {
@@ -137,7 +137,7 @@ void LocalizationEditor::_translation_res_add(const String &p_path) {
}
void LocalizationEditor::_translation_res_option_file_open() {
- translation_res_option_file_open_dialog->popup_centered_ratio();
+ translation_res_option_file_open_dialog->popup_file_dialog();
}
void LocalizationEditor::_translation_res_option_add(const String &p_path) {
@@ -406,11 +406,11 @@ void LocalizationEditor::_pot_delete(Object *p_item, int p_column, int p_button)
}
void LocalizationEditor::_pot_file_open() {
- pot_file_open_dialog->popup_centered_ratio();
+ pot_file_open_dialog->popup_file_dialog();
}
void LocalizationEditor::_pot_generate_open() {
- pot_generate_dialog->popup_centered_ratio();
+ pot_generate_dialog->popup_file_dialog();
}
void LocalizationEditor::_pot_generate(const String &p_file) {
diff --git a/editor/plugins/animation_blend_space_1d_editor.cpp b/editor/plugins/animation_blend_space_1d_editor.cpp
index 959301907c..d335b29c2f 100644
--- a/editor/plugins/animation_blend_space_1d_editor.cpp
+++ b/editor/plugins/animation_blend_space_1d_editor.cpp
@@ -375,7 +375,7 @@ void AnimationNodeBlendSpace1DEditor::_add_menu_type(int p_index) {
for (List<String>::Element *E = filters.front(); E; E = E->next()) {
open_file->add_filter("*." + E->get());
}
- open_file->popup_centered_ratio();
+ open_file->popup_file_dialog();
return;
} else if (p_index == MENU_LOAD_FILE_CONFIRM) {
node = file_loaded;
diff --git a/editor/plugins/animation_blend_space_2d_editor.cpp b/editor/plugins/animation_blend_space_2d_editor.cpp
index 1ab114fc01..805df0cbb9 100644
--- a/editor/plugins/animation_blend_space_2d_editor.cpp
+++ b/editor/plugins/animation_blend_space_2d_editor.cpp
@@ -298,7 +298,7 @@ void AnimationNodeBlendSpace2DEditor::_add_menu_type(int p_index) {
for (List<String>::Element *E = filters.front(); E; E = E->next()) {
open_file->add_filter("*." + E->get());
}
- open_file->popup_centered_ratio();
+ open_file->popup_file_dialog();
return;
} else if (p_index == MENU_LOAD_FILE_CONFIRM) {
node = file_loaded;
diff --git a/editor/plugins/animation_blend_tree_editor_plugin.cpp b/editor/plugins/animation_blend_tree_editor_plugin.cpp
index 82d942821f..6419f62343 100644
--- a/editor/plugins/animation_blend_tree_editor_plugin.cpp
+++ b/editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -276,7 +276,7 @@ void AnimationNodeBlendTreeEditor::_add_node(int p_idx) {
for (List<String>::Element *E = filters.front(); E; E = E->next()) {
open_file->add_filter("*." + E->get());
}
- open_file->popup_centered_ratio();
+ open_file->popup_file_dialog();
return;
} else if (p_idx == MENU_LOAD_FILE_CONFIRM) {
anode = file_loaded;
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp
index be220fb30c..e2f35e29d8 100644
--- a/editor/plugins/animation_player_editor_plugin.cpp
+++ b/editor/plugins/animation_player_editor_plugin.cpp
@@ -340,7 +340,7 @@ void AnimationPlayerEditor::_animation_load() {
file->add_filter("*." + E->get() + " ; " + E->get().to_upper());
}
- file->popup_centered_ratio();
+ file->popup_file_dialog();
current_option = RESOURCE_LOAD;
}
@@ -399,8 +399,8 @@ void AnimationPlayerEditor::_animation_save_as(const Ref<Resource> &p_resource)
}
}
file->set_current_path(path);
- file->popup_centered_ratio();
file->set_title(TTR("Save Resource As..."));
+ file->popup_file_dialog();
current_option = RESOURCE_SAVE;
}
diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp
index 0970608853..26006d85c9 100644
--- a/editor/plugins/animation_state_machine_editor.cpp
+++ b/editor/plugins/animation_state_machine_editor.cpp
@@ -406,7 +406,7 @@ void AnimationNodeStateMachineEditor::_add_menu_type(int p_index) {
for (List<String>::Element *E = filters.front(); E; E = E->next()) {
open_file->add_filter("*." + E->get());
}
- open_file->popup_centered_ratio();
+ open_file->popup_file_dialog();
return;
} else if (p_index == MENU_LOAD_FILE_CONFIRM) {
node = file_loaded;
diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp
index da170cd498..28ac85457b 100644
--- a/editor/plugins/asset_library_editor_plugin.cpp
+++ b/editor/plugins/asset_library_editor_plugin.cpp
@@ -1260,7 +1260,7 @@ void EditorAssetLibrary::_asset_file_selected(const String &p_file) {
}
void EditorAssetLibrary::_asset_open() {
- asset_open->popup_centered_ratio();
+ asset_open->popup_file_dialog();
}
void EditorAssetLibrary::_manage_plugins() {
diff --git a/editor/plugins/baked_lightmap_editor_plugin.cpp b/editor/plugins/baked_lightmap_editor_plugin.cpp
index ee9feb7f74..e5d4e4a761 100644
--- a/editor/plugins/baked_lightmap_editor_plugin.cpp
+++ b/editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -54,7 +54,7 @@ void BakedLightmapEditorPlugin::_bake_select_file(const String &p_file) {
scene_path = scene_path.get_basename() + ".lmbake";
file_dialog->set_current_path(scene_path);
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
} break;
case BakedLightmap::BAKE_ERROR_NO_MESHES:
diff --git a/editor/plugins/cpu_particles_2d_editor_plugin.cpp b/editor/plugins/cpu_particles_2d_editor_plugin.cpp
index 008de7cfb4..32f7d02af2 100644
--- a/editor/plugins/cpu_particles_2d_editor_plugin.cpp
+++ b/editor/plugins/cpu_particles_2d_editor_plugin.cpp
@@ -60,7 +60,7 @@ void CPUParticles2DEditorPlugin::_file_selected(const String &p_file) {
void CPUParticles2DEditorPlugin::_menu_callback(int p_idx) {
switch (p_idx) {
case MENU_LOAD_EMISSION_MASK: {
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} break;
case MENU_CLEAR_EMISSION_MASK: {
diff --git a/editor/plugins/cpu_particles_3d_editor_plugin.cpp b/editor/plugins/cpu_particles_3d_editor_plugin.cpp
index ef26ecd767..d44e487ae4 100644
--- a/editor/plugins/cpu_particles_3d_editor_plugin.cpp
+++ b/editor/plugins/cpu_particles_3d_editor_plugin.cpp
@@ -48,7 +48,7 @@ void CPUParticles3DEditor::_notification(int p_notification) {
void CPUParticles3DEditor::_menu_option(int p_option) {
switch (p_option) {
case MENU_OPTION_CREATE_EMISSION_VOLUME_FROM_NODE: {
- emission_tree_dialog->popup_centered_ratio();
+ emission_tree_dialog->popup_scenetree_dialog();
} break;
diff --git a/editor/plugins/gi_probe_editor_plugin.cpp b/editor/plugins/gi_probe_editor_plugin.cpp
index 1b48e17772..2f5dd36ef1 100644
--- a/editor/plugins/gi_probe_editor_plugin.cpp
+++ b/editor/plugins/gi_probe_editor_plugin.cpp
@@ -41,7 +41,7 @@ void GIProbeEditorPlugin::_bake() {
path = path.get_basename() + "." + gi_probe->get_name() + "_data.res";
}
probe_file->set_current_path(path);
- probe_file->popup_centered_ratio();
+ probe_file->popup_file_dialog();
return;
}
gi_probe->bake();
diff --git a/editor/plugins/gpu_particles_2d_editor_plugin.cpp b/editor/plugins/gpu_particles_2d_editor_plugin.cpp
index 01420dac3e..d27df1d063 100644
--- a/editor/plugins/gpu_particles_2d_editor_plugin.cpp
+++ b/editor/plugins/gpu_particles_2d_editor_plugin.cpp
@@ -69,7 +69,7 @@ void GPUParticles2DEditorPlugin::_menu_callback(int p_idx) {
generate_visibility_rect->popup_centered();
} break;
case MENU_LOAD_EMISSION_MASK: {
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} break;
case MENU_CLEAR_EMISSION_MASK: {
diff --git a/editor/plugins/gpu_particles_3d_editor_plugin.cpp b/editor/plugins/gpu_particles_3d_editor_plugin.cpp
index fa507dd3d7..c98ba25db5 100644
--- a/editor/plugins/gpu_particles_3d_editor_plugin.cpp
+++ b/editor/plugins/gpu_particles_3d_editor_plugin.cpp
@@ -254,7 +254,7 @@ void GPUParticles3DEditor::_menu_option(int p_option) {
return;
}
- emission_tree_dialog->popup_centered_ratio();
+ emission_tree_dialog->popup_scenetree_dialog();
} break;
case MENU_OPTION_CONVERT_TO_CPU_PARTICLES: {
diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp
index 7690beeee8..374a8c8290 100644
--- a/editor/plugins/mesh_library_editor_plugin.cpp
+++ b/editor/plugins/mesh_library_editor_plugin.cpp
@@ -224,7 +224,7 @@ void MeshLibraryEditor::_menu_cbk(int p_option) {
}
} break;
case MENU_OPTION_IMPORT_FROM_SCENE: {
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} break;
case MENU_OPTION_UPDATE_FROM_SCENE: {
cd->set_text(vformat(TTR("Update from existing scene?:\n%s"), String(mesh_library->get_meta("_editor_source_scene"))));
diff --git a/editor/plugins/multimesh_editor_plugin.cpp b/editor/plugins/multimesh_editor_plugin.cpp
index 3904389e09..bd1384967f 100644
--- a/editor/plugins/multimesh_editor_plugin.cpp
+++ b/editor/plugins/multimesh_editor_plugin.cpp
@@ -251,7 +251,7 @@ void MultiMeshEditor::edit(MultiMeshInstance3D *p_multimesh) {
void MultiMeshEditor::_browse(bool p_source) {
browsing_source = p_source;
std->get_scene_tree()->set_marked(node, false);
- std->popup_centered_ratio();
+ std->popup_scenetree_dialog();
if (p_source) {
std->set_title(TTR("Select a Source Mesh:"));
} else {
diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp
index 75cb93ee76..9ab5bfd8a3 100644
--- a/editor/plugins/resource_preloader_editor_plugin.cpp
+++ b/editor/plugins/resource_preloader_editor_plugin.cpp
@@ -95,8 +95,7 @@ void ResourcePreloaderEditor::_load_pressed() {
}
file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILES);
-
- file->popup_centered_ratio();
+ file->popup_file_dialog();
}
void ResourcePreloaderEditor::_item_edited() {
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index 67268e0027..4f783f4e27 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -1107,7 +1107,7 @@ void ScriptEditor::_menu_option(int p_option) {
file_dialog_option = FILE_NEW_TEXTFILE;
file_dialog->clear_filters();
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
file_dialog->set_title(TTR("New Text File..."));
} break;
case FILE_OPEN: {
@@ -1122,7 +1122,7 @@ void ScriptEditor::_menu_option(int p_option) {
file_dialog->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
}
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
file_dialog->set_title(TTR("Open File"));
return;
} break;
@@ -1275,7 +1275,7 @@ void ScriptEditor::_menu_option(int p_option) {
file_dialog->clear_filters();
file_dialog->set_current_dir(text_file->get_path().get_base_dir());
file_dialog->set_current_file(text_file->get_path().get_file());
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
file_dialog->set_title(TTR("Save File As..."));
break;
}
@@ -1425,7 +1425,7 @@ void ScriptEditor::_theme_option(int p_option) {
file_dialog_option = THEME_IMPORT;
file_dialog->clear_filters();
file_dialog->add_filter("*.tet");
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
file_dialog->set_title(TTR("Import Theme"));
} break;
case THEME_RELOAD: {
@@ -1451,7 +1451,7 @@ void ScriptEditor::_show_save_theme_as_dialog() {
file_dialog->clear_filters();
file_dialog->add_filter("*.tet");
file_dialog->set_current_path(EditorSettings::get_singleton()->get_text_editor_themes_dir().plus_file(EditorSettings::get_singleton()->get("text_editor/theme/color_theme")));
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
file_dialog->set_title(TTR("Save Theme As..."));
}
@@ -3354,7 +3354,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
erase_tab_confirm = memnew(ConfirmationDialog);
erase_tab_confirm->get_ok()->set_text(TTR("Save"));
- erase_tab_confirm->add_button(TTR("Discard"), DisplayServer::get_singleton()->get_swap_ok_cancel(), "discard");
+ erase_tab_confirm->add_button(TTR("Discard"), DisplayServer::get_singleton()->get_swap_cancel_ok(), "discard");
erase_tab_confirm->connect("confirmed", callable_mp(this, &ScriptEditor::_close_current_tab));
erase_tab_confirm->connect("custom_action", callable_mp(this, &ScriptEditor::_close_discard_current_tab));
add_child(erase_tab_confirm);
@@ -3388,7 +3388,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
disk_changed->connect("confirmed", callable_mp(this, &ScriptEditor::_reload_scripts));
disk_changed->get_ok()->set_text(TTR("Reload"));
- disk_changed->add_button(TTR("Resave"), !DisplayServer::get_singleton()->get_swap_ok_cancel(), "resave");
+ disk_changed->add_button(TTR("Resave"), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "resave");
disk_changed->connect("custom_action", callable_mp(this, &ScriptEditor::_resave_scripts));
}
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index 3867c8538a..60ba3802fb 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -667,7 +667,7 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) {
disk_changed->connect("confirmed", callable_mp(this, &ShaderEditor::_reload_shader_from_disk));
disk_changed->get_ok()->set_text(TTR("Reload"));
- disk_changed->add_button(TTR("Resave"), !DisplayServer::get_singleton()->get_swap_ok_cancel(), "resave");
+ disk_changed->add_button(TTR("Resave"), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "resave");
disk_changed->connect("custom_action", callable_mp(this, &ShaderEditor::save_external_data));
add_child(disk_changed);
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 7102faf58a..516c14329c 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -48,7 +48,7 @@ void SpriteFramesEditor::_open_sprite_sheet() {
file_split_sheet->add_filter("*." + extensions[i]);
}
- file_split_sheet->popup_centered_ratio();
+ file_split_sheet->popup_file_dialog();
}
void SpriteFramesEditor::_sheet_preview_draw() {
@@ -298,8 +298,7 @@ void SpriteFramesEditor::_load_pressed() {
}
file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILES);
-
- file->popup_centered_ratio();
+ file->popup_file_dialog();
}
void SpriteFramesEditor::_paste_pressed() {
diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp
index a37cf7e426..b121a7ae3e 100644
--- a/editor/plugins/tile_set_editor_plugin.cpp
+++ b/editor/plugins/tile_set_editor_plugin.cpp
@@ -646,7 +646,7 @@ void TileSetEditor::_on_tileset_toolbar_button_pressed(int p_index) {
option = p_index;
switch (option) {
case TOOL_TILESET_ADD_TEXTURE: {
- texture_dialog->popup_centered_ratio();
+ texture_dialog->popup_file_dialog();
} break;
case TOOL_TILESET_REMOVE_TEXTURE: {
if (get_current_texture().is_valid()) {
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index 67ab925a4f..f45161d87b 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -397,7 +397,7 @@ void ProjectExportDialog::_patch_button_pressed(Object *p_item, int p_column, in
patch_erase->set_text(vformat(TTR("Delete patch '%s' from list?"), patches[patch_index].get_file()));
patch_erase->popup_centered();
} else {
- patch_dialog->popup_centered_ratio();
+ patch_dialog->popup_file_dialog();
}
}
@@ -876,7 +876,7 @@ void ProjectExportDialog::_tree_changed() {
}
void ProjectExportDialog::_export_pck_zip() {
- export_pck_zip->popup_centered_ratio();
+ export_pck_zip->popup_file_dialog();
}
void ProjectExportDialog::_export_pck_zip_selected(const String &p_path) {
@@ -952,7 +952,7 @@ void ProjectExportDialog::_export_project() {
}
export_project->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE);
- export_project->popup_centered_ratio();
+ export_project->popup_file_dialog();
}
void ProjectExportDialog::_export_project_to_path(const String &p_path) {
@@ -1248,7 +1248,7 @@ ProjectExportDialog::ProjectExportDialog() {
get_cancel()->set_text(TTR("Close"));
get_ok()->set_text(TTR("Export PCK/Zip"));
- export_button = add_button(TTR("Export Project"), !DisplayServer::get_singleton()->get_swap_ok_cancel(), "export");
+ export_button = add_button(TTR("Export Project"), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "export");
export_button->connect("pressed", callable_mp(this, &ProjectExportDialog::_export_project));
// Disable initially before we select a valid preset
export_button->set_disabled(true);
@@ -1263,7 +1263,7 @@ ProjectExportDialog::ProjectExportDialog() {
export_all_dialog->add_button(TTR("Release"), true, "release");
export_all_dialog->connect("custom_action", callable_mp(this, &ProjectExportDialog::_export_all_dialog_action));
- export_all_button = add_button(TTR("Export All"), !DisplayServer::get_singleton()->get_swap_ok_cancel(), "export");
+ export_all_button = add_button(TTR("Export All"), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "export");
export_all_button->connect("pressed", callable_mp(this, &ProjectExportDialog::_export_all_dialog));
export_all_button->set_disabled(true);
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index cd85817622..a68742a985 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -365,13 +365,13 @@ private:
} else {
fdialog->set_file_mode(FileDialog::FILE_MODE_OPEN_DIR);
}
- fdialog->popup_centered_ratio();
+ fdialog->popup_file_dialog();
}
void _browse_install_path() {
fdialog_install->set_current_dir(install_path->get_text());
fdialog_install->set_file_mode(FileDialog::FILE_MODE_OPEN_DIR);
- fdialog_install->popup_centered_ratio();
+ fdialog_install->popup_file_dialog();
}
void _create_folder() {
@@ -2159,7 +2159,7 @@ void ProjectManager::_scan_begin(const String &p_base) {
}
void ProjectManager::_scan_projects() {
- scan_dir->popup_centered_ratio();
+ scan_dir->popup_file_dialog();
}
void ProjectManager::_new_project() {
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index f4838d336f..c9115fb870 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -152,7 +152,7 @@ void CustomPropertyEditor::_menu_option(int p_which) {
file->add_filter("*." + E->get() + " ; " + E->get().to_upper());
}
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} break;
case OBJ_MENU_EDIT: {
@@ -257,7 +257,7 @@ void CustomPropertyEditor::_menu_option(int p_which) {
if (intype == "ViewportTexture") {
scene_tree->set_title(TTR("Pick a Viewport"));
- scene_tree->popup_centered_ratio();
+ scene_tree->popup_scenetree_dialog();
picking_viewport = true;
return;
}
@@ -1198,7 +1198,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
file->add_filter(filter + " ; " + extensions[i].to_upper());
}
}
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} else {
v = "";
emit_signal("variant_changed");
@@ -1214,7 +1214,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
}
file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_DIR);
file->clear_filters();
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} else {
v = "";
emit_signal("variant_changed");
@@ -1227,7 +1227,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
if (p_which == 0) {
picking_viewport = false;
scene_tree->set_title(TTR("Pick a Node"));
- scene_tree->popup_centered_ratio();
+ scene_tree->popup_scenetree_dialog();
} else if (p_which == 1) {
v = NodePath();
@@ -1281,7 +1281,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
file->add_filter("*." + E->get() + " ; " + E->get().to_upper());
}
- file->popup_centered_ratio();
+ file->popup_file_dialog();
} else if (p_which == 2) {
RES r = v;
diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp
index 4af6fb2053..e1308b4895 100644
--- a/editor/quick_open.cpp
+++ b/editor/quick_open.cpp
@@ -34,183 +34,184 @@
void EditorQuickOpen::popup_dialog(const StringName &p_base, bool p_enable_multi, bool p_dontclear) {
base_type = p_base;
- search_options->set_select_mode(p_enable_multi ? Tree::SELECT_MULTI : Tree::SELECT_SINGLE);
- popup_centered_ratio(0.4);
+ allow_multi_select = p_enable_multi;
+ search_options->set_select_mode(allow_multi_select ? Tree::SELECT_MULTI : Tree::SELECT_SINGLE);
+ popup_centered_clamped(Size2i(600, 440), 0.8f);
+
+ EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->get_filesystem();
+ _build_search_cache(efsd);
if (p_dontclear) {
search_box->select_all();
+ _update_search();
} else {
- search_box->clear();
+ search_box->clear(); // This will emit text_changed.
}
-
search_box->grab_focus();
- _update_search();
}
-String EditorQuickOpen::get_selected() const {
- TreeItem *ti = search_options->get_selected();
- if (!ti) {
- return String();
+void EditorQuickOpen::_build_search_cache(EditorFileSystemDirectory *p_efsd) {
+ for (int i = 0; i < p_efsd->get_subdir_count(); i++) {
+ _build_search_cache(p_efsd->get_subdir(i));
}
- return "res://" + ti->get_text(0);
-}
+ for (int i = 0; i < p_efsd->get_file_count(); i++) {
+ String file_type = p_efsd->get_file_type(i);
+ if (ClassDB::is_parent_class(file_type, base_type)) {
+ String file = p_efsd->get_file_path(i);
+ files.push_back(file.substr(6, file.length()));
-Vector<String> EditorQuickOpen::get_selected_files() const {
- Vector<String> files;
+ // Store refs to used icons.
+ String ext = file.get_extension();
+ if (!icons.has(ext)) {
+ icons.insert(ext, get_theme_icon((has_theme_icon(file_type, "EditorIcons") ? file_type : "Object"), "EditorIcons"));
+ }
+ }
+ }
+}
- TreeItem *item = search_options->get_next_selected(search_options->get_root());
- while (item) {
- files.push_back("res://" + item->get_text(0));
- item = search_options->get_next_selected(item);
+void EditorQuickOpen::_update_search() {
+ const String search_text = search_box->get_text();
+ const bool empty_search = search_text == "";
+
+ // Filter possible candidates.
+ Vector<Entry> entries;
+ for (int i = 0; i < files.size(); i++) {
+ if (empty_search || search_text.is_subsequence_ofi(files[i])) {
+ Entry r;
+ r.path = files[i];
+ r.score = empty_search ? 0 : _score_path(search_text, files[i].to_lower());
+ entries.push_back(r);
+ }
}
- return files;
-}
+ // Display results
+ TreeItem *root = search_options->get_root();
+ root->clear_children();
-void EditorQuickOpen::_text_changed(const String &p_newtext) {
- _update_search();
-}
+ if (entries.size() > 0) {
+ if (!empty_search) {
+ SortArray<Entry, EntryComparator> sorter;
+ sorter.sort(entries.ptrw(), entries.size());
+ }
-void EditorQuickOpen::_sbox_input(const Ref<InputEvent> &p_ie) {
- Ref<InputEventKey> k = p_ie;
- if (k.is_valid()) {
- switch (k->get_keycode()) {
- case KEY_UP:
- case KEY_DOWN:
- case KEY_PAGEUP:
- case KEY_PAGEDOWN: {
- search_options->call("_gui_input", k);
- search_box->accept_event();
+ const int entry_limit = MIN(entries.size(), 300);
+ for (int i = 0; i < entry_limit; i++) {
+ TreeItem *ti = search_options->create_item(root);
+ ti->set_text(0, entries[i].path);
+ ti->set_icon(0, *icons.lookup_ptr(entries[i].path.get_extension()));
+ }
- TreeItem *root = search_options->get_root();
- if (!root->get_children()) {
- break;
- }
+ TreeItem *to_select = root->get_children();
+ to_select->select(0);
+ to_select->set_as_cursor(0);
+ search_options->scroll_to_item(to_select);
- TreeItem *current = search_options->get_selected();
- TreeItem *item = search_options->get_next_selected(root);
- while (item) {
- item->deselect(0);
- item = search_options->get_next_selected(item);
- }
+ get_ok()->set_disabled(false);
+ } else {
+ search_options->deselect_all();
- current->select(0);
- current->set_as_cursor(0);
- } break;
- }
+ get_ok()->set_disabled(true);
}
}
-float EditorQuickOpen::_score_path(String search, String path) const {
- // Positive bias for matches close to the _beginning of the file name_.
- String file = path.get_file();
- int pos = file.findn(search);
+float EditorQuickOpen::_score_path(const String &p_search, const String &p_path) {
+ float score = 0.9f + .1f * (p_search.length() / (float)p_path.length());
+
+ // Positive bias for matches close to the beginning of the file name.
+ String file = p_path.get_file();
+ int pos = file.findn(p_search);
if (pos != -1) {
- return 1.0f - 0.1f * (float(pos) / file.length());
+ return score * (1.0f - 0.1f * (float(pos) / file.length()));
}
- // Positive bias for matches close to the _end of the path_.
- String base = path.get_base_dir();
- pos = base.rfindn(search);
+ // Positive bias for matches close to the end of the path.
+ pos = p_path.rfindn(p_search);
if (pos != -1) {
- return 0.9f - 0.1f * (float(base.length() - pos) / base.length());
+ return score * (0.8f - 0.1f * (float(p_path.length() - pos) / p_path.length()));
}
- // Results that contain all characters but not the string.
- return path.similarity(search) * 0.8f;
+ // Remaining results belong to the same class of results.
+ return score * 0.69f;
}
-void EditorQuickOpen::_parse_fs(EditorFileSystemDirectory *efsd, Vector<Pair<String, Ref<Texture2D>>> &list) {
- for (int i = 0; i < efsd->get_subdir_count(); i++) {
- _parse_fs(efsd->get_subdir(i), list);
- }
-
- for (int i = 0; i < efsd->get_file_count(); i++) {
- StringName file_type = efsd->get_file_type(i);
-
- if (ClassDB::is_parent_class(file_type, base_type)) {
- String file = efsd->get_file_path(i);
- file = file.substr(6, file.length());
-
- if (search_box->get_text().is_subsequence_ofi(file)) {
- Pair<String, Ref<Texture2D>> pair;
- pair.first = file;
- pair.second = search_options->get_theme_icon(search_options->has_theme_icon(file_type, ei) ? file_type : ot, ei);
- list.push_back(pair);
- }
- }
+void EditorQuickOpen::_confirmed() {
+ if (!search_options->get_selected()) {
+ return;
}
+ _cleanup();
+ emit_signal("quick_open");
+ hide();
}
-Vector<Pair<String, Ref<Texture2D>>> EditorQuickOpen::_sort_fs(Vector<Pair<String, Ref<Texture2D>>> &list) {
- String search_text = search_box->get_text().to_lower();
- Vector<Pair<String, Ref<Texture2D>>> sorted_list;
+void EditorQuickOpen::cancel_pressed() {
+ _cleanup();
+}
- if (search_text == String() || list.size() == 0) {
- return list;
- }
+void EditorQuickOpen::_cleanup() {
+ files.clear();
+ icons.clear();
+}
- Vector<float> scores;
- scores.resize(list.size());
- for (int i = 0; i < list.size(); i++) {
- scores.write[i] = _score_path(search_text, list[i].first.to_lower());
- }
+void EditorQuickOpen::_text_changed(const String &p_newtext) {
+ _update_search();
+}
- while (list.size() > 0) {
- float best_score = 0.0f;
- int best_idx = 0;
+void EditorQuickOpen::_sbox_input(const Ref<InputEvent> &p_ie) {
+ Ref<InputEventKey> k = p_ie;
+ if (k.is_valid()) {
+ switch (k->get_keycode()) {
+ case KEY_UP:
+ case KEY_DOWN:
+ case KEY_PAGEUP:
+ case KEY_PAGEDOWN: {
+ search_options->call("_gui_input", k);
+ search_box->accept_event();
- for (int i = 0; i < list.size(); i++) {
- float current_score = scores[i];
- if (current_score > best_score) {
- best_score = current_score;
- best_idx = i;
- }
+ if (allow_multi_select) {
+ TreeItem *root = search_options->get_root();
+ if (!root->get_children()) {
+ break;
+ }
+
+ TreeItem *current = search_options->get_selected();
+ TreeItem *item = search_options->get_next_selected(root);
+ while (item) {
+ item->deselect(0);
+ item = search_options->get_next_selected(item);
+ }
+
+ current->select(0);
+ current->set_as_cursor(0);
+ }
+ } break;
}
-
- sorted_list.push_back(list[best_idx]);
- list.remove(best_idx);
- scores.remove(best_idx);
}
-
- return sorted_list;
}
-void EditorQuickOpen::_update_search() {
- search_options->clear();
- TreeItem *root = search_options->create_item();
- EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->get_filesystem();
- Vector<Pair<String, Ref<Texture2D>>> list;
-
- _parse_fs(efsd, list);
- list = _sort_fs(list);
-
- for (int i = 0; i < list.size(); i++) {
- TreeItem *ti = search_options->create_item(root);
- ti->set_text(0, list[i].first);
- ti->set_icon(0, list[i].second);
- }
-
- TreeItem *result = root->get_children();
- if (result) {
- result->select(0);
- result->set_as_cursor(0);
+String EditorQuickOpen::get_selected() const {
+ TreeItem *ti = search_options->get_selected();
+ if (!ti) {
+ return String();
}
- get_ok()->set_disabled(!result);
+ return "res://" + ti->get_text(0);
}
-void EditorQuickOpen::_confirmed() {
- if (!search_options->get_selected()) {
- return;
+Vector<String> EditorQuickOpen::get_selected_files() const {
+ Vector<String> selected_files;
+
+ TreeItem *item = search_options->get_next_selected(search_options->get_root());
+ while (item) {
+ selected_files.push_back("res://" + item->get_text(0));
+ item = search_options->get_next_selected(item);
}
- emit_signal("quick_open");
- hide();
+
+ return selected_files;
}
-void EditorQuickOpen::_theme_changed() {
- search_box->set_right_icon(search_options->get_theme_icon("Search", ei));
+StringName EditorQuickOpen::get_base_type() const {
+ return base_type;
}
void EditorQuickOpen::_notification(int p_what) {
@@ -226,8 +227,8 @@ void EditorQuickOpen::_notification(int p_what) {
}
}
-StringName EditorQuickOpen::get_base_type() const {
- return base_type;
+void EditorQuickOpen::_theme_changed() {
+ search_box->set_right_icon(search_options->get_theme_icon("Search", "EditorIcons"));
}
void EditorQuickOpen::_bind_methods() {
@@ -235,6 +236,8 @@ void EditorQuickOpen::_bind_methods() {
}
EditorQuickOpen::EditorQuickOpen() {
+ allow_multi_select = false;
+
VBoxContainer *vbc = memnew(VBoxContainer);
vbc->connect("theme_changed", callable_mp(this, &EditorQuickOpen::_theme_changed));
add_child(vbc);
@@ -243,18 +246,16 @@ EditorQuickOpen::EditorQuickOpen() {
search_box->connect("text_changed", callable_mp(this, &EditorQuickOpen::_text_changed));
search_box->connect("gui_input", callable_mp(this, &EditorQuickOpen::_sbox_input));
vbc->add_margin_child(TTR("Search:"), search_box);
+ register_text_enter(search_box);
search_options = memnew(Tree);
search_options->connect("item_activated", callable_mp(this, &EditorQuickOpen::_confirmed));
+ search_options->create_item();
search_options->set_hide_root(true);
search_options->set_hide_folding(true);
search_options->add_theme_constant_override("draw_guides", 1);
vbc->add_margin_child(TTR("Matches:"), search_options, true);
get_ok()->set_text(TTR("Open"));
- register_text_enter(search_box);
set_hide_on_ok(false);
-
- ei = "EditorIcons";
- ot = "Object";
}
diff --git a/editor/quick_open.h b/editor/quick_open.h
index 5bcdfc7bf2..6486ee0221 100644
--- a/editor/quick_open.h
+++ b/editor/quick_open.h
@@ -31,7 +31,7 @@
#ifndef EDITOR_QUICK_OPEN_H
#define EDITOR_QUICK_OPEN_H
-#include "core/pair.h"
+#include "core/oa_hash_map.h"
#include "editor_file_system.h"
#include "scene/gui/dialogs.h"
#include "scene/gui/tree.h"
@@ -41,19 +41,32 @@ class EditorQuickOpen : public ConfirmationDialog {
LineEdit *search_box;
Tree *search_options;
-
StringName base_type;
- StringName ei;
- StringName ot;
+ bool allow_multi_select;
- void _update_search();
+ Vector<String> files;
+ OAHashMap<String, Ref<Texture2D>> icons;
- void _sbox_input(const Ref<InputEvent> &p_ie);
- void _parse_fs(EditorFileSystemDirectory *efsd, Vector<Pair<String, Ref<Texture2D>>> &list);
- Vector<Pair<String, Ref<Texture2D>>> _sort_fs(Vector<Pair<String, Ref<Texture2D>>> &list);
- float _score_path(String search, String path) const;
+ struct Entry {
+ String path;
+ float score;
+ };
+
+ struct EntryComparator {
+ _FORCE_INLINE_ bool operator()(const Entry &A, const Entry &B) const {
+ return A.score > B.score;
+ }
+ };
+
+ void _update_search();
+ void _build_search_cache(EditorFileSystemDirectory *p_efsd);
+ float _score_path(const String &p_search, const String &p_path);
void _confirmed();
+ virtual void cancel_pressed() override;
+ void _cleanup();
+
+ void _sbox_input(const Ref<InputEvent> &p_ie);
void _text_changed(const String &p_newtext);
void _theme_changed();
diff --git a/editor/reparent_dialog.cpp b/editor/reparent_dialog.cpp
index e5ae09f5ff..1615336a4b 100644
--- a/editor/reparent_dialog.cpp
+++ b/editor/reparent_dialog.cpp
@@ -75,14 +75,8 @@ ReparentDialog::ReparentDialog() {
tree = memnew(SceneTreeEditor(false));
tree->set_show_enabled_subscene(true);
-
- vbc->add_margin_child(TTR("Reparent Location (Select new Parent):"), tree, true);
-
tree->get_scene_tree()->connect("item_activated", callable_mp(this, &ReparentDialog::_reparent));
-
- //Label *label = memnew( Label );
- //label->set_position( Point2( 15,8) );
- //label->set_text("Reparent Location (Select new Parent):");
+ vbc->add_margin_child(TTR("Select new parent:"), tree, true);
keep_transform = memnew(CheckBox);
keep_transform->set_text(TTR("Keep Global Transform"));
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index 41b8baeb2f..90747e45e4 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -645,9 +645,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
for (List<Node *>::Element *E = nodes.front(); E; E = E->next()) {
nodeset.insert(E->get());
}
- reparent_dialog->popup_centered_ratio();
reparent_dialog->set_current(nodeset);
-
+ reparent_dialog->popup_centered_clamped(Size2(350, 700) * EDSCALE);
} break;
case TOOL_MAKE_ROOT: {
if (!profile_allow_editing) {
@@ -834,8 +833,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
}
new_scene_from_dialog->set_current_path(existing);
- new_scene_from_dialog->popup_centered_ratio();
new_scene_from_dialog->set_title(TTR("Save New Scene As..."));
+ new_scene_from_dialog->popup_file_dialog();
} break;
case TOOL_COPY_NODE_PATH: {
List<Node *> selection = editor_selection->get_selected_node_list();
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp
index f30e57579f..7404c9779b 100644
--- a/editor/scene_tree_editor.cpp
+++ b/editor/scene_tree_editor.cpp
@@ -33,6 +33,7 @@
#include "core/message_queue.h"
#include "core/print_string.h"
#include "editor/editor_node.h"
+#include "editor/editor_scale.h"
#include "editor/node_dock.h"
#include "editor/plugins/animation_player_editor_plugin.h"
#include "editor/plugins/canvas_item_editor_plugin.h"
@@ -1194,6 +1195,10 @@ SceneTreeEditor::~SceneTreeEditor() {
/******** DIALOG *********/
+void SceneTreeDialog::popup_scenetree_dialog() {
+ popup_centered_clamped(Size2(350, 700) * EDSCALE);
+}
+
void SceneTreeDialog::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_VISIBILITY_CHANGED: {
diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h
index 106837f69a..21bb0ec062 100644
--- a/editor/scene_tree_editor.h
+++ b/editor/scene_tree_editor.h
@@ -179,6 +179,7 @@ protected:
static void _bind_methods();
public:
+ void popup_scenetree_dialog();
SceneTreeEditor *get_scene_tree() { return tree; }
SceneTreeDialog();
~SceneTreeDialog();
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp
index 40e0582046..ffdf8208b8 100644
--- a/editor/script_create_dialog.cpp
+++ b/editor/script_create_dialog.cpp
@@ -540,7 +540,7 @@ void ScriptCreateDialog::_browse_path(bool browse_parent, bool p_save) {
}
file_browse->set_current_path(file_path->get_text());
- file_browse->popup_centered_ratio();
+ file_browse->popup_file_dialog();
}
void ScriptCreateDialog::_file_selected(const String &p_file) {
diff --git a/misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@2x.png b/misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@2x.png
index 766b0b66ef..3a0469319b 100644
--- a/misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@2x.png
+++ b/misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@2x.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@3x.png b/misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@3x.png
index 766b0b66ef..3a0469319b 100644
--- a/misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@3x.png
+++ b/misc/dist/ios_xcode/godot_ios/Images.xcassets/SplashImage.imageset/splash@3x.png
Binary files differ
diff --git a/modules/gdnative/gdnative_library_editor_plugin.cpp b/modules/gdnative/gdnative_library_editor_plugin.cpp
index 1d4d188f23..fdd755845f 100644
--- a/modules/gdnative/gdnative_library_editor_plugin.cpp
+++ b/modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -146,7 +146,7 @@ void GDNativeLibraryEditor::_on_item_button(Object *item, int column, int id) {
}
file_dialog->set_file_mode(mode);
- file_dialog->popup_centered_ratio();
+ file_dialog->popup_file_dialog();
} else if (id == BUTTON_CLEAR_LIBRARY) {
_set_target_value(section, target, "");
diff --git a/modules/gdnative/nativescript/api_generator.cpp b/modules/gdnative/nativescript/api_generator.cpp
index ae0b5222f0..019fa0d1f8 100644
--- a/modules/gdnative/nativescript/api_generator.cpp
+++ b/modules/gdnative/nativescript/api_generator.cpp
@@ -214,7 +214,7 @@ List<ClassAPI> generate_c_api_classes() {
{
List<StringName> inheriters;
ClassDB::get_inheriters_from_class("Reference", &inheriters);
- bool is_reference = !!inheriters.find(class_name);
+ bool is_reference = !!inheriters.find(class_name) || class_name == "Reference";
// @Unclear
class_api.is_reference = !class_api.is_singleton && is_reference;
}
@@ -452,6 +452,7 @@ static List<String> generate_c_api_json(const List<ClassAPI> &p_api) {
source.push_back("\t\t\t\t\t{\n");
source.push_back("\t\t\t\t\t\t\"name\": \"" + e->get().argument_names[i] + "\",\n");
source.push_back("\t\t\t\t\t\t\"type\": \"" + e->get().argument_types[i] + "\",\n");
+ source.push_back(String("\t\t\t\t\t\t\"has_default_value\": ") + (e->get().default_arguments.has(i) ? "true" : "false") + ",\n");
source.push_back("\t\t\t\t\t\t\"default_value\": \"" + (e->get().default_arguments.has(i) ? (String)e->get().default_arguments[i] : "") + "\"\n");
source.push_back(String("\t\t\t\t\t}") + ((i < e->get().argument_names.size() - 1) ? "," : "") + "\n");
}
diff --git a/platform/android/display_server_android.cpp b/platform/android/display_server_android.cpp
index 1fb0d7ef60..3bc9e6d876 100644
--- a/platform/android/display_server_android.cpp
+++ b/platform/android/display_server_android.cpp
@@ -448,6 +448,8 @@ DisplayServerAndroid::DisplayServerAndroid(const String &p_rendering_driver, Dis
#endif
Input::get_singleton()->set_event_dispatch_function(_dispatch_input_events);
+
+ r_error = OK;
}
DisplayServerAndroid::~DisplayServerAndroid() {
diff --git a/platform/osx/display_server_osx.h b/platform/osx/display_server_osx.h
index c636463e68..68e8454fd0 100644
--- a/platform/osx/display_server_osx.h
+++ b/platform/osx/display_server_osx.h
@@ -288,7 +288,7 @@ public:
virtual CursorShape cursor_get_shape() const override;
virtual void cursor_set_custom_image(const RES &p_cursor, CursorShape p_shape = CURSOR_ARROW, const Vector2 &p_hotspot = Vector2()) override;
- virtual bool get_swap_ok_cancel() override;
+ virtual bool get_swap_cancel_ok() override;
virtual int keyboard_get_layout_count() const override;
virtual int keyboard_get_current_layout() const override;
diff --git a/platform/osx/display_server_osx.mm b/platform/osx/display_server_osx.mm
index 4793591b54..5cc2b25910 100644
--- a/platform/osx/display_server_osx.mm
+++ b/platform/osx/display_server_osx.mm
@@ -2583,16 +2583,18 @@ void DisplayServerOSX::window_set_size(const Size2i p_size, WindowID p_window) {
Size2i size = p_size / screen_get_max_scale();
- if (!wd.borderless) {
- // NSRect used by setFrame includes the title bar, so add it to our size.y
- CGFloat menuBarHeight = [[[NSApplication sharedApplication] mainMenu] menuBarHeight];
- if (menuBarHeight != 0.f) {
- size.y += menuBarHeight;
- }
- }
+ NSPoint top_left;
+ NSRect old_frame = [wd.window_object frame];
+ top_left.x = old_frame.origin.x;
+ top_left.y = NSMaxY(old_frame);
- NSRect frame = [wd.window_object frame];
- [wd.window_object setFrame:NSMakeRect(frame.origin.x, frame.origin.y, size.x, size.y) display:YES];
+ NSRect new_frame = NSMakeRect(0, 0, size.x, size.y);
+ new_frame = [wd.window_object frameRectForContentRect:new_frame];
+
+ new_frame.origin.x = top_left.x;
+ new_frame.origin.y = top_left.y - new_frame.size.height;
+
+ [wd.window_object setFrame:new_frame display:YES];
_update_window(wd);
}
@@ -2913,8 +2915,8 @@ void DisplayServerOSX::window_set_ime_position(const Point2i &p_pos, WindowID p_
wd.im_position = p_pos;
}
-bool DisplayServerOSX::get_swap_ok_cancel() {
- return true;
+bool DisplayServerOSX::get_swap_cancel_ok() {
+ return false;
}
void DisplayServerOSX::cursor_set_shape(CursorShape p_shape) {
diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h
index 95359c68b0..c35b634353 100644
--- a/platform/uwp/os_uwp.h
+++ b/platform/uwp/os_uwp.h
@@ -245,7 +245,7 @@ public:
void run();
- virtual bool get_swap_ok_cancel() { return true; }
+ virtual bool get_swap_cancel_ok() { return true; }
void input_event(const Ref<InputEvent> &p_event);
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index 3eba0934b1..0251ffe664 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -1367,7 +1367,7 @@ void DisplayServerWindows::cursor_set_custom_image(const RES &p_cursor, CursorSh
}
}
-bool DisplayServerWindows::get_swap_ok_cancel() {
+bool DisplayServerWindows::get_swap_cancel_ok() {
return true;
}
diff --git a/platform/windows/display_server_windows.h b/platform/windows/display_server_windows.h
index 8433bb449b..725f9697c5 100644
--- a/platform/windows/display_server_windows.h
+++ b/platform/windows/display_server_windows.h
@@ -520,7 +520,7 @@ public:
virtual CursorShape cursor_get_shape() const;
virtual void cursor_set_custom_image(const RES &p_cursor, CursorShape p_shape = CURSOR_ARROW, const Vector2 &p_hotspot = Vector2());
- virtual bool get_swap_ok_cancel();
+ virtual bool get_swap_cancel_ok();
virtual void enable_for_stealing_focus(OS::ProcessID pid);
diff --git a/scene/3d/physics_body_3d.cpp b/scene/3d/physics_body_3d.cpp
index fda072e233..72ae75b236 100644
--- a/scene/3d/physics_body_3d.cpp
+++ b/scene/3d/physics_body_3d.cpp
@@ -1241,12 +1241,12 @@ void KinematicBody3D::_direct_state_changed(Object *p_state) {
KinematicBody3D::KinematicBody3D() :
PhysicsBody3D(PhysicsServer3D::BODY_MODE_KINEMATIC) {
- margin = 0.001;
locked_axis = 0;
on_floor = false;
on_ceiling = false;
on_wall = false;
+ set_safe_margin(0.001);
PhysicsServer3D::get_singleton()->body_set_force_integration_callback(get_rid(), this, "_direct_state_changed");
}
diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp
index faef979090..9077bfa4ba 100644
--- a/scene/gui/dialogs.cpp
+++ b/scene/gui/dialogs.cpp
@@ -258,7 +258,7 @@ Button *AcceptDialog::add_cancel(const String &p_cancel) {
if (p_cancel == "") {
c = RTR("Cancel");
}
- Button *b = swap_ok_cancel ? add_button(c, true) : add_button(c);
+ Button *b = swap_cancel_ok ? add_button(c, true) : add_button(c);
b->connect("pressed", callable_mp(this, &AcceptDialog::_cancel_pressed));
return b;
}
@@ -286,9 +286,9 @@ void AcceptDialog::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "dialog_autowrap"), "set_autowrap", "has_autowrap");
}
-bool AcceptDialog::swap_ok_cancel = false;
-void AcceptDialog::set_swap_ok_cancel(bool p_swap) {
- swap_ok_cancel = p_swap;
+bool AcceptDialog::swap_cancel_ok = false;
+void AcceptDialog::set_swap_cancel_ok(bool p_swap) {
+ swap_cancel_ok = p_swap;
}
AcceptDialog::AcceptDialog() {
diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h
index 063090c832..de08685ce2 100644
--- a/scene/gui/dialogs.h
+++ b/scene/gui/dialogs.h
@@ -54,7 +54,7 @@ class AcceptDialog : public Window {
void _custom_action(const String &p_action);
void _update_child_rects();
- static bool swap_ok_cancel;
+ static bool swap_cancel_ok;
void _input_from_window(const Ref<InputEvent> &p_event);
void _parent_focused();
@@ -75,7 +75,7 @@ protected:
public:
Label *get_label() { return label; }
- static void set_swap_ok_cancel(bool p_swap);
+ static void set_swap_cancel_ok(bool p_swap);
void register_text_enter(Node *p_line_edit);
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp
index 1e0d3d9f7b..21eb3d558c 100644
--- a/scene/gui/file_dialog.cpp
+++ b/scene/gui/file_dialog.cpp
@@ -40,6 +40,10 @@ FileDialog::GetIconFunc FileDialog::get_large_icon_func = nullptr;
FileDialog::RegisterFunc FileDialog::register_func = nullptr;
FileDialog::RegisterFunc FileDialog::unregister_func = nullptr;
+void FileDialog::popup_file_dialog() {
+ popup_centered_clamped(Size2i(700, 500), 0.8f);
+}
+
VBoxContainer *FileDialog::get_vbox() {
return vbox;
}
diff --git a/scene/gui/file_dialog.h b/scene/gui/file_dialog.h
index c5272af233..8003650668 100644
--- a/scene/gui/file_dialog.h
+++ b/scene/gui/file_dialog.h
@@ -135,6 +135,7 @@ protected:
static void _bind_methods();
//bind helpers
public:
+ void popup_file_dialog();
void clear_filters();
void add_filter(const String &p_filter);
void set_filters(const Vector<String> &p_filters);
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 22e5bd55f3..8d7bccf814 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -2769,7 +2769,7 @@ void RichTextLabel::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selection_enabled"), "set_selection_enabled", "is_selection_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "override_selected_font_color"), "set_override_selected_font_color", "is_overriding_selected_font_color");
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "custom_effects", PROPERTY_HINT_RESOURCE_TYPE, "17/17:RichTextEffect", (PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE), "RichTextEffect"), "set_effects", "get_effects");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "custom_effects", PROPERTY_HINT_ARRAY_TYPE, "RichTextEffect", (PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE)), "set_effects", "get_effects");
ADD_SIGNAL(MethodInfo("meta_clicked", PropertyInfo(Variant::NIL, "meta", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NIL_IS_VARIANT)));
ADD_SIGNAL(MethodInfo("meta_hover_started", PropertyInfo(Variant::NIL, "meta", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NIL_IS_VARIANT)));
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index 0ad1d39755..3cbc64c075 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -372,7 +372,7 @@ void register_scene_types() {
OS::get_singleton()->yield(); //may take time to init
- AcceptDialog::set_swap_ok_cancel(GLOBAL_DEF("gui/common/swap_ok_cancel", bool(DisplayServer::get_singleton()->get_swap_ok_cancel())));
+ AcceptDialog::set_swap_cancel_ok(GLOBAL_DEF("gui/common/swap_cancel_ok", bool(DisplayServer::get_singleton()->get_swap_cancel_ok())));
#endif
/* REGISTER 3D */
diff --git a/servers/display_server.cpp b/servers/display_server.cpp
index 72cfd87880..65db0de001 100644
--- a/servers/display_server.cpp
+++ b/servers/display_server.cpp
@@ -238,7 +238,7 @@ void DisplayServer::cursor_set_custom_image(const RES &p_cursor, CursorShape p_s
WARN_PRINT("Custom cursor shape not supported by this display server.");
}
-bool DisplayServer::get_swap_ok_cancel() {
+bool DisplayServer::get_swap_cancel_ok() {
return false;
}
@@ -464,7 +464,7 @@ void DisplayServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("cursor_get_shape"), &DisplayServer::cursor_get_shape);
ClassDB::bind_method(D_METHOD("cursor_set_custom_image", "cursor", "shape", "hotspot"), &DisplayServer::cursor_set_custom_image, DEFVAL(CURSOR_ARROW), DEFVAL(Vector2()));
- ClassDB::bind_method(D_METHOD("get_swap_ok_cancel"), &DisplayServer::get_swap_ok_cancel);
+ ClassDB::bind_method(D_METHOD("get_swap_cancel_ok"), &DisplayServer::get_swap_cancel_ok);
ClassDB::bind_method(D_METHOD("enable_for_stealing_focus", "process_id"), &DisplayServer::enable_for_stealing_focus);
diff --git a/servers/display_server.h b/servers/display_server.h
index 79f6f5d0fc..2cf0a83dbd 100644
--- a/servers/display_server.h
+++ b/servers/display_server.h
@@ -318,7 +318,7 @@ public:
virtual CursorShape cursor_get_shape() const;
virtual void cursor_set_custom_image(const RES &p_cursor, CursorShape p_shape = CURSOR_ARROW, const Vector2 &p_hotspot = Vector2());
- virtual bool get_swap_ok_cancel();
+ virtual bool get_swap_cancel_ok();
virtual void enable_for_stealing_focus(OS::ProcessID pid);
diff --git a/servers/physics_3d/body_3d_sw.cpp b/servers/physics_3d/body_3d_sw.cpp
index a3bdc96c9f..d1f16cb4ae 100644
--- a/servers/physics_3d/body_3d_sw.cpp
+++ b/servers/physics_3d/body_3d_sw.cpp
@@ -750,7 +750,7 @@ Body3DSW::Body3DSW() :
active = true;
mass = 1;
- kinematic_safe_margin = 0.01;
+ kinematic_safe_margin = 0.001;
//_inv_inertia=Transform();
_inv_mass = 1;
bounce = 0;
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index b903951400..535011710d 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -1137,13 +1137,13 @@ bool ShaderLanguage::_validate_operator(OperatorNode *p_op, DataType *r_ret_type
} else if (na == TYPE_FLOAT && nb == TYPE_VEC4) {
valid = true;
ret_type = TYPE_VEC4;
- } else if (p_op->op == OP_MUL && na == TYPE_FLOAT && nb == TYPE_MAT2) {
+ } else if (na == TYPE_FLOAT && nb == TYPE_MAT2) {
valid = true;
ret_type = TYPE_MAT2;
- } else if (p_op->op == OP_MUL && na == TYPE_FLOAT && nb == TYPE_MAT3) {
+ } else if (na == TYPE_FLOAT && nb == TYPE_MAT3) {
valid = true;
ret_type = TYPE_MAT3;
- } else if (p_op->op == OP_MUL && na == TYPE_FLOAT && nb == TYPE_MAT4) {
+ } else if (na == TYPE_FLOAT && nb == TYPE_MAT4) {
valid = true;
ret_type = TYPE_MAT4;
} else if (p_op->op == OP_MUL && na == TYPE_VEC2 && nb == TYPE_MAT2) {
@@ -1313,13 +1313,13 @@ bool ShaderLanguage::_validate_operator(OperatorNode *p_op, DataType *r_ret_type
} else if (na == TYPE_VEC4 && nb == TYPE_FLOAT) {
valid = true;
ret_type = TYPE_VEC4;
- } else if (p_op->op == OP_ASSIGN_MUL && na == TYPE_MAT2 && nb == TYPE_VEC2) {
+ } else if (na == TYPE_MAT2 && nb == TYPE_FLOAT) {
valid = true;
ret_type = TYPE_MAT2;
- } else if (p_op->op == OP_ASSIGN_MUL && na == TYPE_MAT3 && nb == TYPE_VEC3) {
+ } else if (na == TYPE_MAT3 && nb == TYPE_FLOAT) {
valid = true;
ret_type = TYPE_MAT3;
- } else if (p_op->op == OP_ASSIGN_MUL && na == TYPE_MAT4 && nb == TYPE_VEC4) {
+ } else if (na == TYPE_MAT4 && nb == TYPE_FLOAT) {
valid = true;
ret_type = TYPE_MAT4;
} else if (p_op->op == OP_ASSIGN_MUL && na == TYPE_VEC2 && nb == TYPE_MAT2) {