summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editor/code_editor.cpp9
-rw-r--r--editor/code_editor.h2
-rw-r--r--editor/editor_settings.cpp1
-rw-r--r--editor/plugins/script_editor_plugin.cpp38
-rw-r--r--editor/plugins/script_editor_plugin.h4
-rw-r--r--scene/2d/camera_2d.cpp8
6 files changed, 50 insertions, 12 deletions
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index 93c86d920a..665ce7658f 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -373,7 +373,6 @@ void FindReplaceBar::_hide_bar() {
void FindReplaceBar::_show_search() {
- hide(); // to update size correctly
show();
search_text->grab_focus();
@@ -481,7 +480,7 @@ void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) {
void FindReplaceBar::_update_size() {
- container->set_custom_minimum_size(Size2(0, hbc->get_size().height));
+ container->set_size(Size2(hbc->get_size().width, 1));
}
void FindReplaceBar::_bind_methods() {
@@ -507,7 +506,8 @@ void FindReplaceBar::_bind_methods() {
FindReplaceBar::FindReplaceBar() {
- container = memnew(Control);
+ container = memnew(MarginContainer);
+ container->add_constant_override("margin_bottom", 5 * EDSCALE);
add_child(container);
container->set_clip_contents(true);
container->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -592,8 +592,7 @@ FindReplaceBar::FindReplaceBar() {
add_child(hide_button);
hide_button->set_focus_mode(FOCUS_NONE);
hide_button->connect("pressed", this, "_hide_pressed");
- hide_button->set_expand(true);
- hide_button->set_stretch_mode(TextureButton::STRETCH_KEEP_CENTERED);
+ hide_button->set_v_size_flags(SIZE_SHRINK_CENTER);
}
/*** CODE EDITOR ****/
diff --git a/editor/code_editor.h b/editor/code_editor.h
index a860ad24e2..2a3bb1ba76 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -63,7 +63,7 @@ class FindReplaceBar : public HBoxContainer {
GDCLASS(FindReplaceBar, HBoxContainer);
- Control *container;
+ MarginContainer *container;
LineEdit *search_text;
ToolButton *find_prev;
ToolButton *find_next;
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 68705fa29d..fe0392334c 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -383,6 +383,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("text_editor/files/trim_trailing_whitespace_on_save", false);
_initial_set("text_editor/completion/idle_parse_delay", 2);
_initial_set("text_editor/tools/create_signal_callbacks", true);
+ _initial_set("text_editor/tools/sort_members_outline_alphabetically", false);
_initial_set("text_editor/files/autosave_interval_secs", 0);
_initial_set("text_editor/cursor/block_caret", false);
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index fa674e1e34..ac250f085d 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -1182,6 +1182,7 @@ void ScriptEditor::_notification(int p_what) {
script_forward->set_icon(get_icon("Forward", "EditorIcons"));
script_back->set_icon(get_icon("Back", "EditorIcons"));
+ members_overview_alphabeta_sort_button->set_icon(get_icon("Sort", "EditorIcons"));
} break;
case NOTIFICATION_READY: {
@@ -1408,12 +1409,19 @@ void ScriptEditor::_update_members_overview_visibility() {
}
if (members_overview_enabled && se->show_members_overview()) {
+ members_overview_buttons_hbox->set_visible(true);
members_overview->set_visible(true);
} else {
+ members_overview_buttons_hbox->set_visible(false);
members_overview->set_visible(false);
}
}
+void ScriptEditor::_toggle_members_overview_alpha_sort(bool p_alphabetic_sort) {
+ EditorSettings::get_singleton()->set("text_editor/tools/sort_members_outline_alphabetically", p_alphabetic_sort);
+ _update_members_overview();
+}
+
void ScriptEditor::_update_members_overview() {
members_overview->clear();
@@ -1423,6 +1431,10 @@ void ScriptEditor::_update_members_overview() {
}
Vector<String> functions = se->get_functions();
+ if (EditorSettings::get_singleton()->get("text_editor/tools/sort_members_outline_alphabetically")) {
+ functions.sort();
+ }
+
for (int i = 0; i < functions.size(); i++) {
members_overview->add_item(functions[i].get_slice(":", 0));
members_overview->set_item_metadata(i, functions[i].get_slice(":", 1).to_int() - 1);
@@ -1445,6 +1457,7 @@ void ScriptEditor::_update_help_overview_visibility() {
}
if (help_overview_enabled) {
+ members_overview_buttons_hbox->set_visible(false);
help_overview->set_visible(true);
} else {
help_overview->set_visible(false);
@@ -2596,6 +2609,8 @@ void ScriptEditor::_bind_methods() {
ClassDB::bind_method("_live_auto_reload_running_scripts", &ScriptEditor::_live_auto_reload_running_scripts);
ClassDB::bind_method("_unhandled_input", &ScriptEditor::_unhandled_input);
ClassDB::bind_method("_script_list_gui_input", &ScriptEditor::_script_list_gui_input);
+ ClassDB::bind_method("_toggle_members_overview_alpha_sort", &ScriptEditor::_toggle_members_overview_alpha_sort);
+ ClassDB::bind_method("_update_members_overview", &ScriptEditor::_update_members_overview);
ClassDB::bind_method("_script_changed", &ScriptEditor::_script_changed);
ClassDB::bind_method("_update_recent_scripts", &ScriptEditor::_update_recent_scripts);
ClassDB::bind_method("_on_find_in_files_requested", &ScriptEditor::_on_find_in_files_requested);
@@ -2656,14 +2671,33 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
add_child(context_menu);
context_menu->connect("id_pressed", this, "_menu_option");
+ members_overview_vbox = memnew(VBoxContainer);
+ members_overview_vbox->set_custom_minimum_size(Size2(0, 90));
+ members_overview_vbox->set_v_size_flags(SIZE_EXPAND_FILL);
+
+ list_split->add_child(members_overview_vbox);
+ members_overview_buttons_hbox = memnew(HBoxContainer);
+ members_overview_vbox->add_child(members_overview_buttons_hbox);
+
+ members_overview_alphabeta_sort_button = memnew(ToolButton);
+ members_overview_alphabeta_sort_button->set_tooltip(TTR("Sort alphabetically"));
+ members_overview_alphabeta_sort_button->set_toggle_mode(true);
+ members_overview_alphabeta_sort_button->set_pressed(EditorSettings::get_singleton()->get("text_editor/tools/sort_members_outline_alphabetically"));
+ members_overview_alphabeta_sort_button->connect("toggled", this, "_toggle_members_overview_alpha_sort");
+
+ members_overview_buttons_hbox->add_child(members_overview_alphabeta_sort_button);
+
members_overview = memnew(ItemList);
- list_split->add_child(members_overview);
+ members_overview_vbox->add_child(members_overview);
+
members_overview->set_allow_reselect(true);
members_overview->set_custom_minimum_size(Size2(0, 90)); //need to give a bit of limit to avoid it from disappearing
members_overview->set_v_size_flags(SIZE_EXPAND_FILL);
+ members_overview->set_allow_rmb_select(true);
+ members_overview->set_drag_forwarding(this);
help_overview = memnew(ItemList);
- list_split->add_child(help_overview);
+ members_overview_vbox->add_child(help_overview);
help_overview->set_allow_reselect(true);
help_overview->set_custom_minimum_size(Size2(0, 90)); //need to give a bit of limit to avoid it from disappearing
help_overview->set_v_size_flags(SIZE_EXPAND_FILL);
diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h
index 9f37b18d7d..a2ff47cd99 100644
--- a/editor/plugins/script_editor_plugin.h
+++ b/editor/plugins/script_editor_plugin.h
@@ -199,6 +199,9 @@ class ScriptEditor : public PanelContainer {
ItemList *script_list;
HSplitContainer *script_split;
ItemList *members_overview;
+ VBoxContainer *members_overview_vbox;
+ HBoxContainer *members_overview_buttons_hbox;
+ ToolButton *members_overview_alphabeta_sort_button;
bool members_overview_enabled;
ItemList *help_overview;
bool help_overview_enabled;
@@ -318,6 +321,7 @@ class ScriptEditor : public PanelContainer {
void _update_members_overview_visibility();
void _update_members_overview();
+ void _toggle_members_overview_alpha_sort(bool p_alphabetic_sort);
void _update_script_names();
bool _sort_list_on_update;
diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp
index d172da5bd9..3b86ca76ea 100644
--- a/scene/2d/camera_2d.cpp
+++ b/scene/2d/camera_2d.cpp
@@ -91,8 +91,8 @@ Transform2D Camera2D::get_camera_transform() {
if (anchor_mode == ANCHOR_MODE_DRAG_CENTER) {
if (h_drag_enabled && !Engine::get_singleton()->is_editor_hint()) {
- camera_pos.x = MIN(camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_LEFT]));
- camera_pos.x = MAX(camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT]));
+ camera_pos.x = MIN(camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * zoom.x * drag_margin[MARGIN_LEFT]));
+ camera_pos.x = MAX(camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * zoom.x * drag_margin[MARGIN_RIGHT]));
} else {
if (h_ofs < 0) {
@@ -104,8 +104,8 @@ Transform2D Camera2D::get_camera_transform() {
if (v_drag_enabled && !Engine::get_singleton()->is_editor_hint()) {
- camera_pos.y = MIN(camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_TOP]));
- camera_pos.y = MAX(camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM]));
+ camera_pos.y = MIN(camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * zoom.y * drag_margin[MARGIN_TOP]));
+ camera_pos.y = MAX(camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * zoom.y * drag_margin[MARGIN_BOTTOM]));
} else {