Merge pull request #52479 from KoBeWi/the_close_of_all_tabs
Don't stop closing on unsaved script
This commit is contained in:
commit
80e2c084cd
|
@ -808,39 +808,35 @@ void ScriptEditor::_copy_script_path() {
|
|||
}
|
||||
|
||||
void ScriptEditor::_close_other_tabs() {
|
||||
int child_count = tab_container->get_child_count();
|
||||
int current_idx = tab_container->get_current_tab();
|
||||
for (int i = child_count - 1; i >= 0; i--) {
|
||||
if (i == current_idx) {
|
||||
continue;
|
||||
for (int i = tab_container->get_child_count() - 1; i >= 0; i--) {
|
||||
if (i != current_idx) {
|
||||
script_close_queue.push_back(i);
|
||||
}
|
||||
|
||||
tab_container->set_current_tab(i);
|
||||
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
|
||||
|
||||
if (se) {
|
||||
// Maybe there are unsaved changes
|
||||
if (se->is_unsaved()) {
|
||||
_ask_close_current_unsaved_tab(se);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
_close_current_tab(false);
|
||||
}
|
||||
_queue_close_tabs();
|
||||
}
|
||||
|
||||
void ScriptEditor::_close_all_tabs() {
|
||||
int child_count = tab_container->get_child_count();
|
||||
for (int i = child_count - 1; i >= 0; i--) {
|
||||
tab_container->set_current_tab(i);
|
||||
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
|
||||
for (int i = tab_container->get_child_count() - 1; i >= 0; i--) {
|
||||
script_close_queue.push_back(i);
|
||||
}
|
||||
_queue_close_tabs();
|
||||
}
|
||||
|
||||
void ScriptEditor::_queue_close_tabs() {
|
||||
while (!script_close_queue.is_empty()) {
|
||||
int idx = script_close_queue.front()->get();
|
||||
script_close_queue.pop_front();
|
||||
|
||||
tab_container->set_current_tab(idx);
|
||||
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(idx));
|
||||
if (se) {
|
||||
// Maybe there are unsaved changes
|
||||
// Maybe there are unsaved changes.
|
||||
if (se->is_unsaved()) {
|
||||
_ask_close_current_unsaved_tab(se);
|
||||
continue;
|
||||
erase_tab_confirm->connect(SceneStringNames::get_singleton()->visibility_changed, callable_mp(this, &ScriptEditor::_queue_close_tabs), varray(), CONNECT_ONESHOT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -309,6 +309,7 @@ class ScriptEditor : public PanelContainer {
|
|||
int history_pos;
|
||||
|
||||
List<String> previous_scripts;
|
||||
List<int> script_close_queue;
|
||||
|
||||
void _tab_changed(int p_which);
|
||||
void _menu_option(int p_option);
|
||||
|
@ -341,6 +342,7 @@ class ScriptEditor : public PanelContainer {
|
|||
void _close_docs_tab();
|
||||
void _close_other_tabs();
|
||||
void _close_all_tabs();
|
||||
void _queue_close_tabs();
|
||||
|
||||
void _copy_script_path();
|
||||
|
||||
|
|
Loading…
Reference in New Issue