diff options
| -rw-r--r-- | editor/code_editor.cpp | 14 | ||||
| -rw-r--r-- | editor/plugins/script_editor_plugin.cpp | 16 | ||||
| -rw-r--r-- | editor/plugins/script_editor_plugin.h | 1 | 
3 files changed, 28 insertions, 3 deletions
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index bf328e50e7..16f55312bb 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -105,6 +105,11 @@ void FindReplaceBar::_notification(int p_what) {  		hide_button->set_custom_minimum_size(hide_button->get_normal_texture()->get_size());  	} else if (p_what == NOTIFICATION_THEME_CHANGED) {  		matches_label->add_theme_color_override("font_color", results_count > 0 ? get_theme_color("font_color", "Label") : get_theme_color("error_color", "Editor")); +	} else if (p_what == NOTIFICATION_PREDELETE) { +		if (base_text_editor) { +			base_text_editor->remove_find_replace_bar(); +			base_text_editor = nullptr; +		}  	}  } @@ -595,6 +600,10 @@ void FindReplaceBar::set_text_edit(CodeTextEditor *p_text_editor) {  		text_editor = nullptr;  	} +	if (!p_text_editor) { +		return; +	} +  	results_count = -1;  	base_text_editor = p_text_editor;  	text_editor = base_text_editor->get_text_editor(); @@ -1667,6 +1676,11 @@ void CodeTextEditor::_notification(int p_what) {  			}  			set_process_input(is_visible_in_tree());  		} break; +		case NOTIFICATION_PREDELETE: { +			if (find_replace_bar) { +				find_replace_bar->set_text_edit(nullptr); +			} +		} break;  		default:  			break;  	} diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 89b486c4df..498d5b0711 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -760,6 +760,7 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save, bool p_history_back) {  	_update_members_overview_visibility();  	_update_help_overview_visibility();  	_save_layout(); +	_update_find_replace_bar();  }  void ScriptEditor::_close_current_tab(bool p_save) { @@ -829,6 +830,7 @@ void ScriptEditor::_close_all_tabs() {  		_close_current_tab(false);  	} +	_update_find_replace_bar();  }  void ScriptEditor::_ask_close_current_unsaved_tab(ScriptEditorBase *current) { @@ -1640,15 +1642,13 @@ void ScriptEditor::ensure_select_current() {  		ScriptEditorBase *se = _get_current_editor();  		if (se) {  			se->enable_editor(); -			se->set_find_replace_bar(find_replace_bar);  			if (!grab_focus_block && is_visible_in_tree()) {  				se->ensure_focus();  			} -		} else { -			find_replace_bar->hide();  		}  	} +	_update_find_replace_bar();  	_update_selected_editor_menu();  } @@ -2520,6 +2520,16 @@ void ScriptEditor::_file_removed(const String &p_removed_file) {  	}  } +void ScriptEditor::_update_find_replace_bar() { +	ScriptEditorBase *se = _get_current_editor(); +	if (se) { +		se->set_find_replace_bar(find_replace_bar); +	} else { +		find_replace_bar->set_text_edit(nullptr); +		find_replace_bar->hide(); +	} +} +  void ScriptEditor::_autosave_scripts() {  	save_all_scripts();  } diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h index a03a4b393b..72a649ffbf 100644 --- a/editor/plugins/script_editor_plugin.h +++ b/editor/plugins/script_editor_plugin.h @@ -328,6 +328,7 @@ class ScriptEditor : public PanelContainer {  	void _show_error_dialog(String p_path);  	void _close_tab(int p_idx, bool p_save = true, bool p_history_back = true); +	void _update_find_replace_bar();  	void _close_current_tab(bool p_save = true);  	void _close_discard_current_tab(const String &p_str);  |