Keep to show current script when closing all docs
also fix error when removing multiple tabs from TabContainer at same frame.
like closing multiple docs at once.
Fix #16403
(cherry picked from commit df84290a7e
)
This commit is contained in:
parent
83b76a8171
commit
317cb336eb
|
@ -497,7 +497,7 @@ void ScriptEditor::_open_recent_script(int p_idx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptEditor::_close_tab(int p_idx, bool p_save) {
|
void ScriptEditor::_close_tab(int p_idx, bool p_save, bool p_history_back) {
|
||||||
|
|
||||||
int selected = p_idx;
|
int selected = p_idx;
|
||||||
if (selected < 0 || selected >= tab_container->get_child_count())
|
if (selected < 0 || selected >= tab_container->get_child_count())
|
||||||
|
@ -517,7 +517,9 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// roll back to previous tab
|
// roll back to previous tab
|
||||||
_history_back();
|
if (p_history_back) {
|
||||||
|
_history_back();
|
||||||
|
}
|
||||||
|
|
||||||
//remove from history
|
//remove from history
|
||||||
history.resize(history_pos + 1);
|
history.resize(history_pos + 1);
|
||||||
|
@ -575,7 +577,7 @@ void ScriptEditor::_close_docs_tab() {
|
||||||
EditorHelp *se = Object::cast_to<EditorHelp>(tab_container->get_child(i));
|
EditorHelp *se = Object::cast_to<EditorHelp>(tab_container->get_child(i));
|
||||||
|
|
||||||
if (se) {
|
if (se) {
|
||||||
_close_tab(i);
|
_close_tab(i, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -251,7 +251,9 @@ class ScriptEditor : public PanelContainer {
|
||||||
void _update_recent_scripts();
|
void _update_recent_scripts();
|
||||||
void _open_recent_script(int p_idx);
|
void _open_recent_script(int p_idx);
|
||||||
|
|
||||||
void _close_tab(int p_idx, bool p_save = true);
|
void _show_error_dialog(String p_path);
|
||||||
|
|
||||||
|
void _close_tab(int p_idx, bool p_save = true, bool p_history_back = true);
|
||||||
|
|
||||||
void _close_current_tab();
|
void _close_current_tab();
|
||||||
void _close_discard_current_tab(const String &p_str);
|
void _close_discard_current_tab(const String &p_str);
|
||||||
|
|
|
@ -474,21 +474,24 @@ void TabContainer::remove_child_notify(Node *p_child) {
|
||||||
|
|
||||||
Control::remove_child_notify(p_child);
|
Control::remove_child_notify(p_child);
|
||||||
|
|
||||||
int tc = get_tab_count();
|
call_deferred("_update_current_tab");
|
||||||
if (current == tc - 1) {
|
|
||||||
current--;
|
|
||||||
if (current < 0)
|
|
||||||
current = 0;
|
|
||||||
else {
|
|
||||||
call_deferred("set_current_tab", current);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p_child->disconnect("renamed", this, "_child_renamed_callback");
|
p_child->disconnect("renamed", this, "_child_renamed_callback");
|
||||||
|
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabContainer::_update_current_tab() {
|
||||||
|
|
||||||
|
int tc = get_tab_count();
|
||||||
|
if (current >= tc)
|
||||||
|
current = tc - 1;
|
||||||
|
if (current < 0)
|
||||||
|
current = 0;
|
||||||
|
else
|
||||||
|
set_current_tab(current);
|
||||||
|
}
|
||||||
|
|
||||||
void TabContainer::set_tab_align(TabAlign p_align) {
|
void TabContainer::set_tab_align(TabAlign p_align) {
|
||||||
|
|
||||||
ERR_FAIL_INDEX(p_align, 3);
|
ERR_FAIL_INDEX(p_align, 3);
|
||||||
|
@ -664,6 +667,7 @@ void TabContainer::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_child_renamed_callback"), &TabContainer::_child_renamed_callback);
|
ClassDB::bind_method(D_METHOD("_child_renamed_callback"), &TabContainer::_child_renamed_callback);
|
||||||
ClassDB::bind_method(D_METHOD("_on_theme_changed"), &TabContainer::_on_theme_changed);
|
ClassDB::bind_method(D_METHOD("_on_theme_changed"), &TabContainer::_on_theme_changed);
|
||||||
|
ClassDB::bind_method(D_METHOD("_update_current_tab"), &TabContainer::_update_current_tab);
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab")));
|
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab")));
|
||||||
ADD_SIGNAL(MethodInfo("tab_selected", PropertyInfo(Variant::INT, "tab")));
|
ADD_SIGNAL(MethodInfo("tab_selected", PropertyInfo(Variant::INT, "tab")));
|
||||||
|
|
|
@ -62,6 +62,7 @@ private:
|
||||||
Vector<Control *> _get_tabs() const;
|
Vector<Control *> _get_tabs() const;
|
||||||
int _get_tab_width(int p_index) const;
|
int _get_tab_width(int p_index) const;
|
||||||
void _on_theme_changed();
|
void _on_theme_changed();
|
||||||
|
void _update_current_tab();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _child_renamed_callback();
|
void _child_renamed_callback();
|
||||||
|
|
Loading…
Reference in New Issue