Browse Source

Do not use theme to set LineEdit right_icon

Łukasz Rutkowski 7 years ago
parent
commit
81fb81de9d

+ 1 - 1
editor/create_dialog.cpp

@@ -425,7 +425,7 @@ void CreateDialog::_notification(int p_what) {
 	switch (p_what) {
 	switch (p_what) {
 		case NOTIFICATION_ENTER_TREE: {
 		case NOTIFICATION_ENTER_TREE: {
 			connect("confirmed", this, "_confirmed");
 			connect("confirmed", this, "_confirmed");
-			search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 			search_box->set_clear_button_enabled(true);
 			search_box->set_clear_button_enabled(true);
 			favorite->set_icon(get_icon("Favorites", "EditorIcons"));
 			favorite->set_icon(get_icon("Favorites", "EditorIcons"));
 		} break;
 		} break;

+ 4 - 4
editor/editor_help.cpp

@@ -253,7 +253,7 @@ void EditorHelpSearch::_notification(int p_what) {
 	if (p_what == NOTIFICATION_ENTER_TREE) {
 	if (p_what == NOTIFICATION_ENTER_TREE) {
 
 
 		//_update_icons
 		//_update_icons
-		search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+		search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 		search_box->set_clear_button_enabled(true);
 		search_box->set_clear_button_enabled(true);
 
 
 		connect("confirmed", this, "_confirmed");
 		connect("confirmed", this, "_confirmed");
@@ -268,7 +268,7 @@ void EditorHelpSearch::_notification(int p_what) {
 	} else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
 	} else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
 
 
 		//_update_icons
 		//_update_icons
-		search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+		search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 		search_box->set_clear_button_enabled(true);
 		search_box->set_clear_button_enabled(true);
 	} else if (p_what == NOTIFICATION_PROCESS) {
 	} else if (p_what == NOTIFICATION_PROCESS) {
 
 
@@ -383,7 +383,7 @@ void EditorHelpIndex::_notification(int p_what) {
 	if (p_what == NOTIFICATION_ENTER_TREE) {
 	if (p_what == NOTIFICATION_ENTER_TREE) {
 
 
 		//_update_icons
 		//_update_icons
-		search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+		search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 		search_box->set_clear_button_enabled(true);
 		search_box->set_clear_button_enabled(true);
 		_update_class_list();
 		_update_class_list();
 
 
@@ -395,7 +395,7 @@ void EditorHelpIndex::_notification(int p_what) {
 	} else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
 	} else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
 
 
 		//_update_icons
 		//_update_icons
-		search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+		search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 		search_box->set_clear_button_enabled(true);
 		search_box->set_clear_button_enabled(true);
 	}
 	}
 }
 }

+ 2 - 2
editor/filesystem_dock.cpp

@@ -196,7 +196,7 @@ void FileSystemDock::_notification(int p_what) {
 			files->connect("item_activated", this, "_select_file");
 			files->connect("item_activated", this, "_select_file");
 			button_hist_next->connect("pressed", this, "_fw_history");
 			button_hist_next->connect("pressed", this, "_fw_history");
 			button_hist_prev->connect("pressed", this, "_bw_history");
 			button_hist_prev->connect("pressed", this, "_bw_history");
-			search_box->add_icon_override("right_icon", get_icon("Search", ei));
+			search_box->set_right_icon(get_icon("Search", ei));
 			search_box->set_clear_button_enabled(true);
 			search_box->set_clear_button_enabled(true);
 
 
 			button_hist_next->set_icon(get_icon("Forward", ei));
 			button_hist_next->set_icon(get_icon("Forward", ei));
@@ -253,7 +253,7 @@ void FileSystemDock::_notification(int p_what) {
 			button_hist_next->set_icon(get_icon("Forward", ei));
 			button_hist_next->set_icon(get_icon("Forward", ei));
 			button_hist_prev->set_icon(get_icon("Back", ei));
 			button_hist_prev->set_icon(get_icon("Back", ei));
 
 
-			search_box->add_icon_override("right_icon", get_icon("Search", ei));
+			search_box->set_right_icon(get_icon("Search", ei));
 			search_box->set_clear_button_enabled(true);
 			search_box->set_clear_button_enabled(true);
 
 
 			if (new_mode != display_mode) {
 			if (new_mode != display_mode) {

+ 2 - 2
editor/groups_editor.cpp

@@ -287,9 +287,9 @@ void GroupDialog::_notification(int p_what) {
 			add_button->set_icon(get_icon("Forward", "EditorIcons"));
 			add_button->set_icon(get_icon("Forward", "EditorIcons"));
 			remove_button->set_icon(get_icon("Back", "EditorIcons"));
 			remove_button->set_icon(get_icon("Back", "EditorIcons"));
 
 
-			add_filter->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			add_filter->set_right_icon(get_icon("Search", "EditorIcons"));
 			add_filter->set_clear_button_enabled(true);
 			add_filter->set_clear_button_enabled(true);
-			remove_filter->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			remove_filter->set_right_icon(get_icon("Search", "EditorIcons"));
 			remove_filter->set_clear_button_enabled(true);
 			remove_filter->set_clear_button_enabled(true);
 		} break;
 		} break;
 	}
 	}

+ 1 - 1
editor/inspector_dock.cpp

@@ -529,7 +529,7 @@ InspectorDock::InspectorDock(EditorNode *p_editor, EditorData &p_editor_data) {
 	search = memnew(LineEdit);
 	search = memnew(LineEdit);
 	search->set_h_size_flags(Control::SIZE_EXPAND_FILL);
 	search->set_h_size_flags(Control::SIZE_EXPAND_FILL);
 	search->set_placeholder(TTR("Filter properties"));
 	search->set_placeholder(TTR("Filter properties"));
-	search->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+	search->set_right_icon(get_icon("Search", "EditorIcons"));
 	search->set_clear_button_enabled(true);
 	search->set_clear_button_enabled(true);
 	add_child(search);
 	add_child(search);
 
 

+ 2 - 2
editor/plugins/asset_library_editor_plugin.cpp

@@ -554,7 +554,7 @@ void EditorAssetLibrary::_notification(int p_what) {
 
 
 			error_tr->set_texture(get_icon("Error", "EditorIcons"));
 			error_tr->set_texture(get_icon("Error", "EditorIcons"));
 			reverse->set_icon(get_icon("Sort", "EditorIcons"));
 			reverse->set_icon(get_icon("Sort", "EditorIcons"));
-			filter->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			filter->set_right_icon(get_icon("Search", "EditorIcons"));
 			filter->set_clear_button_enabled(true);
 			filter->set_clear_button_enabled(true);
 
 
 			error_label->raise();
 			error_label->raise();
@@ -606,7 +606,7 @@ void EditorAssetLibrary::_notification(int p_what) {
 			library_scroll_bg->add_style_override("panel", get_stylebox("bg", "Tree"));
 			library_scroll_bg->add_style_override("panel", get_stylebox("bg", "Tree"));
 			error_tr->set_texture(get_icon("Error", "EditorIcons"));
 			error_tr->set_texture(get_icon("Error", "EditorIcons"));
 			reverse->set_icon(get_icon("Sort", "EditorIcons"));
 			reverse->set_icon(get_icon("Sort", "EditorIcons"));
-			filter->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			filter->set_right_icon(get_icon("Search", "EditorIcons"));
 			filter->set_clear_button_enabled(true);
 			filter->set_clear_button_enabled(true);
 		} break;
 		} break;
 	}
 	}

+ 1 - 1
editor/plugins/script_editor_plugin.cpp

@@ -220,7 +220,7 @@ void ScriptEditorQuickOpen::_notification(int p_what) {
 
 
 			connect("confirmed", this, "_confirmed");
 			connect("confirmed", this, "_confirmed");
 
 
-			search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 			search_box->set_clear_button_enabled(true);
 			search_box->set_clear_button_enabled(true);
 		} break;
 		} break;
 	}
 	}

+ 1 - 1
editor/plugins/tile_map_editor_plugin.cpp

@@ -73,7 +73,7 @@ void TileMapEditor::_notification(int p_what) {
 			rotate_180->set_icon(get_icon("Rotate180", "EditorIcons"));
 			rotate_180->set_icon(get_icon("Rotate180", "EditorIcons"));
 			rotate_270->set_icon(get_icon("Rotate270", "EditorIcons"));
 			rotate_270->set_icon(get_icon("Rotate270", "EditorIcons"));
 
 
-			search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 			search_box->set_clear_button_enabled(true);
 			search_box->set_clear_button_enabled(true);
 
 
 			PopupMenu *p = options->get_popup();
 			PopupMenu *p = options->get_popup();

+ 1 - 1
editor/project_manager.cpp

@@ -2046,7 +2046,7 @@ void ProjectListFilter::_filter_option_selected(int p_idx) {
 void ProjectListFilter::_notification(int p_what) {
 void ProjectListFilter::_notification(int p_what) {
 
 
 	if (p_what == NOTIFICATION_ENTER_TREE) {
 	if (p_what == NOTIFICATION_ENTER_TREE) {
-		search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+		search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 		search_box->set_clear_button_enabled(true);
 		search_box->set_clear_button_enabled(true);
 	}
 	}
 }
 }

+ 2 - 2
editor/project_settings_editor.cpp

@@ -81,7 +81,7 @@ void ProjectSettingsEditor::_notification(int p_what) {
 			globals_editor->edit(ProjectSettings::get_singleton());
 			globals_editor->edit(ProjectSettings::get_singleton());
 
 
 			search_button->set_icon(get_icon("Search", "EditorIcons"));
 			search_button->set_icon(get_icon("Search", "EditorIcons"));
-			search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 			search_box->set_clear_button_enabled(true);
 			search_box->set_clear_button_enabled(true);
 
 
 			action_add_error->add_color_override("font_color", get_color("error_color", "Editor"));
 			action_add_error->add_color_override("font_color", get_color("error_color", "Editor"));
@@ -120,7 +120,7 @@ void ProjectSettingsEditor::_notification(int p_what) {
 		case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
 		case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
 
 
 			search_button->set_icon(get_icon("Search", "EditorIcons"));
 			search_button->set_icon(get_icon("Search", "EditorIcons"));
-			search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 			search_box->set_clear_button_enabled(true);
 			search_box->set_clear_button_enabled(true);
 			action_add_error->add_color_override("font_color", get_color("error_color", "Editor"));
 			action_add_error->add_color_override("font_color", get_color("error_color", "Editor"));
 			popup_add->set_item_icon(popup_add->get_item_index(INPUT_KEY), get_icon("Keyboard", "EditorIcons"));
 			popup_add->set_item_icon(popup_add->get_item_index(INPUT_KEY), get_icon("Keyboard", "EditorIcons"));

+ 1 - 1
editor/quick_open.cpp

@@ -259,7 +259,7 @@ void EditorQuickOpen::_notification(int p_what) {
 
 
 		connect("confirmed", this, "_confirmed");
 		connect("confirmed", this, "_confirmed");
 
 
-		search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+		search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 		search_box->set_clear_button_enabled(true);
 		search_box->set_clear_button_enabled(true);
 	}
 	}
 }
 }

+ 2 - 2
editor/scene_tree_dock.cpp

@@ -862,7 +862,7 @@ void SceneTreeDock::_notification(int p_what) {
 			button_create_script->set_icon(get_icon("ScriptCreate", "EditorIcons"));
 			button_create_script->set_icon(get_icon("ScriptCreate", "EditorIcons"));
 			button_clear_script->set_icon(get_icon("ScriptRemove", "EditorIcons"));
 			button_clear_script->set_icon(get_icon("ScriptRemove", "EditorIcons"));
 
 
-			filter->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			filter->set_right_icon(get_icon("Search", "EditorIcons"));
 			filter->set_clear_button_enabled(true);
 			filter->set_clear_button_enabled(true);
 
 
 			EditorNode::get_singleton()->get_editor_selection()->connect("selection_changed", this, "_selection_changed");
 			EditorNode::get_singleton()->get_editor_selection()->connect("selection_changed", this, "_selection_changed");
@@ -911,7 +911,7 @@ void SceneTreeDock::_notification(int p_what) {
 			button_create_script->set_icon(get_icon("ScriptCreate", "EditorIcons"));
 			button_create_script->set_icon(get_icon("ScriptCreate", "EditorIcons"));
 			button_clear_script->set_icon(get_icon("ScriptRemove", "EditorIcons"));
 			button_clear_script->set_icon(get_icon("ScriptRemove", "EditorIcons"));
 
 
-			filter->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+			filter->set_right_icon(get_icon("Search", "EditorIcons"));
 			filter->set_clear_button_enabled(true);
 			filter->set_clear_button_enabled(true);
 		} break;
 		} break;
 		case NOTIFICATION_PROCESS: {
 		case NOTIFICATION_PROCESS: {

+ 2 - 2
editor/settings_config_dialog.cpp

@@ -182,9 +182,9 @@ void EditorSettingsDialog::_unhandled_input(const Ref<InputEvent> &p_event) {
 
 
 void EditorSettingsDialog::_update_icons() {
 void EditorSettingsDialog::_update_icons() {
 
 
-	search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+	search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 	search_box->set_clear_button_enabled(true);
 	search_box->set_clear_button_enabled(true);
-	shortcut_search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+	shortcut_search_box->set_right_icon(get_icon("Search", "EditorIcons"));
 	shortcut_search_box->set_clear_button_enabled(true);
 	shortcut_search_box->set_clear_button_enabled(true);
 
 
 	restart_close_button->set_icon(get_icon("Close", "EditorIcons"));
 	restart_close_button->set_icon(get_icon("Close", "EditorIcons"));

+ 1 - 1
modules/visual_script/visual_script_editor.cpp

@@ -3032,7 +3032,7 @@ void VisualScriptEditor::_node_filter_changed(const String &p_text) {
 void VisualScriptEditor::_notification(int p_what) {
 void VisualScriptEditor::_notification(int p_what) {
 
 
 	if (p_what == NOTIFICATION_READY) {
 	if (p_what == NOTIFICATION_READY) {
-		node_filter->add_icon_override("right_icon", Control::get_icon("Search", "EditorIcons"));
+		node_filter->set_right_icon(Control::get_icon("Search", "EditorIcons"));
 		node_filter->set_clear_button_enabled(true);
 		node_filter->set_clear_button_enabled(true);
 		variable_editor->connect("changed", this, "_update_members");
 		variable_editor->connect("changed", this, "_update_members");
 		signal_editor->connect("changed", this, "_update_members");
 		signal_editor->connect("changed", this, "_update_members");

+ 12 - 5
scene/gui/line_edit.cpp

@@ -700,8 +700,8 @@ void LineEdit::_notification(int p_what) {
 			font_color.a *= disabled_alpha;
 			font_color.a *= disabled_alpha;
 
 
 			bool display_clear_icon = !using_placeholder && is_editable() && clear_button_enabled;
 			bool display_clear_icon = !using_placeholder && is_editable() && clear_button_enabled;
-			if (has_icon("right_icon") || display_clear_icon) {
-				Ref<Texture> r_icon = Control::get_icon(display_clear_icon ? "clear" : "right_icon");
+			if (right_icon.is_valid() || display_clear_icon) {
+				Ref<Texture> r_icon = display_clear_icon ? Control::get_icon("clear") : right_icon;
 				Color color_icon(1, 1, 1, disabled_alpha * .9);
 				Color color_icon(1, 1, 1, disabled_alpha * .9);
 				if (display_clear_icon) {
 				if (display_clear_icon) {
 					if (clear_button_status.press_attempt && clear_button_status.pressing_inside) {
 					if (clear_button_status.press_attempt && clear_button_status.pressing_inside) {
@@ -1154,9 +1154,8 @@ void LineEdit::set_cursor_position(int p_pos) {
 	} else if (cursor_pos > window_pos) {
 	} else if (cursor_pos > window_pos) {
 		/* Adjust window if cursor goes too much to the right */
 		/* Adjust window if cursor goes too much to the right */
 		int window_width = get_size().width - style->get_minimum_size().width;
 		int window_width = get_size().width - style->get_minimum_size().width;
-		if (has_icon("right_icon")) {
-			Ref<Texture> r_icon = Control::get_icon("right_icon");
-			window_width -= r_icon->get_width();
+		if (right_icon.is_valid()) {
+			window_width -= right_icon->get_width();
 		}
 		}
 
 
 		if (window_width < 0)
 		if (window_width < 0)
@@ -1455,6 +1454,14 @@ bool LineEdit::is_clear_button_enabled() const {
 	return clear_button_enabled;
 	return clear_button_enabled;
 }
 }
 
 
+void LineEdit::set_right_icon(const Ref<Texture> &p_icon) {
+	if (right_icon == p_icon) {
+		return;
+	}
+	right_icon = p_icon;
+	update();
+}
+
 void LineEdit::_ime_text_callback(void *p_self, String p_text, Point2 p_selection) {
 void LineEdit::_ime_text_callback(void *p_self, String p_text, Point2 p_selection) {
 	LineEdit *self = (LineEdit *)p_self;
 	LineEdit *self = (LineEdit *)p_self;
 	self->ime_text = p_text;
 	self->ime_text = p_text;

+ 4 - 0
scene/gui/line_edit.h

@@ -89,6 +89,8 @@ private:
 
 
 	bool clear_button_enabled;
 	bool clear_button_enabled;
 
 
+	Ref<Texture> right_icon;
+
 	struct Selection {
 	struct Selection {
 
 
 		int begin;
 		int begin;
@@ -215,6 +217,8 @@ public:
 	void set_clear_button_enabled(bool p_enabled);
 	void set_clear_button_enabled(bool p_enabled);
 	bool is_clear_button_enabled() const;
 	bool is_clear_button_enabled() const;
 
 
+	void set_right_icon(const Ref<Texture> &p_icon);
+
 	virtual bool is_text_field() const;
 	virtual bool is_text_field() const;
 	LineEdit();
 	LineEdit();
 	~LineEdit();
 	~LineEdit();