diff options
-rw-r--r-- | doc/classes/Label.xml | 2 | ||||
-rw-r--r-- | doc/classes/Material.xml | 2 | ||||
-rw-r--r-- | doc/classes/SubViewportContainer.xml | 1 | ||||
-rw-r--r-- | doc/classes/TileSet.xml | 2 | ||||
-rw-r--r-- | editor/code_editor.cpp | 7 | ||||
-rw-r--r-- | editor/editor_audio_buses.cpp | 13 | ||||
-rw-r--r-- | editor/editor_audio_buses.h | 1 | ||||
-rw-r--r-- | editor/import/resource_importer_texture.cpp | 7 | ||||
-rw-r--r-- | editor/import/resource_importer_texture.h | 1 | ||||
-rw-r--r-- | editor/plugins/skeleton_3d_editor_plugin.cpp | 1 | ||||
-rw-r--r-- | modules/regex/doc_classes/RegEx.xml | 3 | ||||
-rw-r--r-- | modules/regex/doc_classes/RegExMatch.xml | 2 | ||||
-rw-r--r-- | platform/javascript/javascript_main.cpp | 12 | ||||
-rw-r--r-- | scene/gui/rich_text_label.cpp | 3 | ||||
-rw-r--r-- | servers/physics_2d/broad_phase_2d_hash_grid.cpp | 5 |
15 files changed, 40 insertions, 22 deletions
diff --git a/doc/classes/Label.xml b/doc/classes/Label.xml index 263fb6c022..3318f2757d 100644 --- a/doc/classes/Label.xml +++ b/doc/classes/Label.xml @@ -57,7 +57,7 @@ </member> <member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" override="true" enum="Control.MouseFilter" default="2" /> <member name="percent_visible" type="float" setter="set_percent_visible" getter="get_percent_visible" default="1.0"> - Limits the count of visible characters. If you set [code]percent_visible[/code] to 50, only up to half of the text's characters will display on screen. Useful to animate the text in a dialog box. + Limits the amount of visible characters. If you set [code]percent_visible[/code] to 0.5, only up to half of the text's characters will display on screen. Useful to animate the text in a dialog box. </member> <member name="size_flags_vertical" type="int" setter="set_v_size_flags" getter="get_v_size_flags" override="true" default="4" /> <member name="text" type="String" setter="set_text" getter="get_text" default=""""> diff --git a/doc/classes/Material.xml b/doc/classes/Material.xml index a37c8127f0..f3686876ca 100644 --- a/doc/classes/Material.xml +++ b/doc/classes/Material.xml @@ -17,7 +17,7 @@ </member> <member name="render_priority" type="int" setter="set_render_priority" getter="get_render_priority" default="0"> Sets the render priority for transparent objects in 3D scenes. Higher priority objects will be sorted in front of lower priority objects. - [b]Note:[/b] this only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are sorted based on depth, while transparent objects are sorted from back to front (subject to priority). + [b]Note:[/b] this only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority). </member> </members> <constants> diff --git a/doc/classes/SubViewportContainer.xml b/doc/classes/SubViewportContainer.xml index e6a0bd4866..16d483e7f8 100644 --- a/doc/classes/SubViewportContainer.xml +++ b/doc/classes/SubViewportContainer.xml @@ -5,6 +5,7 @@ </brief_description> <description> A [Container] node that holds a [SubViewport], automatically setting its size. + [b]Note:[/b] Changing a SubViewportContainer's [member Control.rect_scale] will cause its contents to appear distorted. To change its visual size without causing distortion, adjust the node's margins instead (if it's not already in a container). </description> <tutorials> </tutorials> diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml index c647f83598..9a78e45d46 100644 --- a/doc/classes/TileSet.xml +++ b/doc/classes/TileSet.xml @@ -44,6 +44,8 @@ <argument index="1" name="neighbor_id" type="int"> </argument> <description> + Determines when the auto-tiler should consider two different auto-tile IDs to be bound together. + [b]Note:[/b] [code]neighbor_id[/code] will be [code]-1[/code] ([constant TileMap.INVALID_CELL]) when checking a tile against an empty neighbor tile. </description> </method> <method name="autotile_clear_bitmask_map"> diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index 1b2b0a26e6..95c7cc0bf1 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -307,18 +307,19 @@ void FindReplaceBar::_update_results_count() { break; } + int pos_subsequent = pos + searched.length(); if (is_whole_words()) { from_pos = pos + 1; // Making sure we won't hit the same match next time, if we get out via a continue. - if (pos > 0 && !is_symbol(full_text[pos - 1])) { + if (pos > 0 && !(is_symbol(full_text[pos - 1]) || full_text[pos - 1] == '\n')) { continue; } - if (pos + searched.length() < full_text.length() && !is_symbol(full_text[pos + searched.length()])) { + if (pos_subsequent < full_text.length() && !(is_symbol(full_text[pos_subsequent]) || full_text[pos_subsequent] == '\n')) { continue; } } results_count++; - from_pos = pos + searched.length(); + from_pos = pos_subsequent; } } diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index f8dec13a5c..5cf5201b18 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -545,6 +545,17 @@ void EditorAudioBus::_gui_input(const Ref<InputEvent> &p_event) { } } +void EditorAudioBus::_unhandled_key_input(Ref<InputEvent> p_event) { + Ref<InputEventKey> k = p_event; + if (k.is_valid() && k->is_pressed() && !k->is_echo() && k->get_keycode() == KEY_DELETE) { + TreeItem *current_effect = effects->get_selected(); + if (current_effect && current_effect->get_metadata(0).get_type() == Variant::INT) { + _delete_effect_pressed(0); + accept_event(); + } + } +} + void EditorAudioBus::_bus_popup_pressed(int p_option) { if (p_option == 2) { // Reset volume @@ -738,6 +749,7 @@ void EditorAudioBus::_bind_methods() { ClassDB::bind_method("update_bus", &EditorAudioBus::update_bus); ClassDB::bind_method("update_send", &EditorAudioBus::update_send); ClassDB::bind_method("_gui_input", &EditorAudioBus::_gui_input); + ClassDB::bind_method("_unhandled_key_input", &EditorAudioBus::_unhandled_key_input); ClassDB::bind_method("get_drag_data_fw", &EditorAudioBus::get_drag_data_fw); ClassDB::bind_method("can_drop_data_fw", &EditorAudioBus::can_drop_data_fw); ClassDB::bind_method("drop_data_fw", &EditorAudioBus::drop_data_fw); @@ -761,6 +773,7 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { add_child(vb); set_v_size_flags(SIZE_EXPAND_FILL); + set_process_unhandled_key_input(true); track_name = memnew(LineEdit); track_name->connect("text_entered", callable_mp(this, &EditorAudioBus::_name_changed)); diff --git a/editor/editor_audio_buses.h b/editor/editor_audio_buses.h index 6b2d9e4436..65caf84f0f 100644 --- a/editor/editor_audio_buses.h +++ b/editor/editor_audio_buses.h @@ -92,6 +92,7 @@ class EditorAudioBus : public PanelContainer { mutable bool hovering_drop; void _gui_input(const Ref<InputEvent> &p_event); + void _unhandled_key_input(Ref<InputEvent> p_event); void _bus_popup_pressed(int p_option); void _name_changed(const String &p_new_name); diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp index a13324f0fc..3a0e624a8f 100644 --- a/editor/import/resource_importer_texture.cpp +++ b/editor/import/resource_importer_texture.cpp @@ -181,15 +181,14 @@ bool ResourceImporterTexture::get_option_visibility(const String &p_option, cons } int ResourceImporterTexture::get_preset_count() const { - return 4; + return 3; } String ResourceImporterTexture::get_preset_name(int p_idx) const { static const char *preset_names[] = { - "2D, Detect 3D", + "2D/3D (Auto-Detect)", "2D", - "2D Pixel", - "3D" + "3D", }; return preset_names[p_idx]; diff --git a/editor/import/resource_importer_texture.h b/editor/import/resource_importer_texture.h index b770d240eb..12eb7f67c2 100644 --- a/editor/import/resource_importer_texture.h +++ b/editor/import/resource_importer_texture.h @@ -93,7 +93,6 @@ public: enum Preset { PRESET_DETECT, PRESET_2D, - PRESET_2D_PIXEL, PRESET_3D, }; diff --git a/editor/plugins/skeleton_3d_editor_plugin.cpp b/editor/plugins/skeleton_3d_editor_plugin.cpp index 321b4432ab..2586f17fe1 100644 --- a/editor/plugins/skeleton_3d_editor_plugin.cpp +++ b/editor/plugins/skeleton_3d_editor_plugin.cpp @@ -665,7 +665,6 @@ void Skeleton3DEditor::create_editors() { options->get_popup()->add_item(TTR("Create physical skeleton"), MENU_OPTION_CREATE_PHYSICAL_SKELETON); options->get_popup()->connect("id_pressed", callable_mp(this, &Skeleton3DEditor::_on_click_option)); - options->hide(); const Color section_color = get_theme_color("prop_subsection", "Editor"); diff --git a/modules/regex/doc_classes/RegEx.xml b/modules/regex/doc_classes/RegEx.xml index 3130c53331..c00fa96b2e 100644 --- a/modules/regex/doc_classes/RegEx.xml +++ b/modules/regex/doc_classes/RegEx.xml @@ -32,8 +32,7 @@ [codeblock] for result in regex.search_all("d01, d03, d0c, x3f and x42"): print(result.get_string("digit")) - # Would print 01 03 3f 42 - # Note that d0c would not match + # Would print 01 03 0 3f 42 [/codeblock] [b]Note:[/b] Godot's regex implementation is based on the [url=https://www.pcre.org/]PCRE2[/url] library. You can view the full pattern reference [url=https://www.pcre.org/current/doc/html/pcre2pattern.html]here[/url]. [b]Tip:[/b] You can use [url=https://regexr.com/]Regexr[/url] to test regular expressions online. diff --git a/modules/regex/doc_classes/RegExMatch.xml b/modules/regex/doc_classes/RegExMatch.xml index 151e881b6f..a45de60aef 100644 --- a/modules/regex/doc_classes/RegExMatch.xml +++ b/modules/regex/doc_classes/RegExMatch.xml @@ -49,7 +49,7 @@ </methods> <members> <member name="names" type="Dictionary" setter="" getter="get_names" default="{}"> - A dictionary of named groups and its corresponding group number. Only groups with that were matched are included. If multiple groups have the same name, that name would refer to the first matching one. + A dictionary of named groups and its corresponding group number. Only groups that were matched are included. If multiple groups have the same name, that name would refer to the first matching one. </member> <member name="strings" type="Array" setter="" getter="get_strings" default="[ ]"> An [Array] of the match and its capturing groups. diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp index 740a72fafa..fd61c46e63 100644 --- a/platform/javascript/javascript_main.cpp +++ b/platform/javascript/javascript_main.cpp @@ -80,6 +80,9 @@ extern "C" EMSCRIPTEN_KEEPALIVE void main_after_fs_sync(char *p_idbfs_err) { Main::start(); os->get_main_loop()->init(); emscripten_resume_main_loop(); + // Immediately run the first iteration. + // We are inside an animation frame, we want to immediately draw on the newly setup canvas. + main_loop_callback(); } int main(int argc, char *argv[]) { @@ -91,14 +94,15 @@ int main(int argc, char *argv[]) { // Sync from persistent state into memory and then // run the 'main_after_fs_sync' function. /* clang-format off */ - EM_ASM( + EM_ASM({ FS.mkdir('/userfs'); FS.mount(IDBFS, {}, '/userfs'); FS.syncfs(true, function(err) { - ccall('main_after_fs_sync', null, ['string'], [err ? err.message : ""]) + requestAnimationFrame(function() { + ccall('main_after_fs_sync', null, ['string'], [err ? err.message : ""]); + }); }); - - ); + }); /* clang-format on */ return 0; diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 2f5af0eda0..662eae394f 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -1970,6 +1970,9 @@ void RichTextLabel::clear() { selection.click = nullptr; selection.active = false; current_idx = 1; + if (scroll_follow) { + scroll_following = true; + } if (fixed_width != -1) { minimum_size_changed(); diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.cpp b/servers/physics_2d/broad_phase_2d_hash_grid.cpp index cfd02cef2c..ae549ed2e4 100644 --- a/servers/physics_2d/broad_phase_2d_hash_grid.cpp +++ b/servers/physics_2d/broad_phase_2d_hash_grid.cpp @@ -75,10 +75,7 @@ void BroadPhase2DHashGrid::_check_motion(Element *p_elem) { if (pairing != E->get()->colliding) { if (pairing) { if (pair_callback) { - void *ud = pair_callback(p_elem->owner, p_elem->subindex, E->key()->owner, E->key()->subindex, pair_userdata); - if (ud) { - E->get()->ud = ud; - } + E->get()->ud = pair_callback(p_elem->owner, p_elem->subindex, E->key()->owner, E->key()->subindex, pair_userdata); } } else { if (unpair_callback) { |