Procházet zdrojové kódy

Fix filtering editor nodes in Create Dialog

kobewi před 2 roky
rodič
revize
970f5533dd
2 změnil soubory, kde provedl 8 přidání a 2 odebrání
  1. 6 1
      editor/create_dialog.cpp
  2. 2 1
      editor/create_dialog.h

+ 6 - 1
editor/create_dialog.cpp

@@ -122,7 +122,7 @@ bool CreateDialog::_should_hide_type(const String &p_type) const {
 		return true;
 	}
 
-	if (base_type == "Node" && p_type.begins_with("Editor")) {
+	if (is_base_type_node && p_type.begins_with("Editor")) {
 		return true; // Do not show editor nodes.
 	}
 
@@ -508,6 +508,11 @@ String CreateDialog::get_selected_type() {
 	return selected->get_text(0);
 }
 
+void CreateDialog::set_base_type(const String &p_base) {
+	base_type = p_base;
+	is_base_type_node = ClassDB::is_parent_class(p_base, "Node");
+}
+
 Variant CreateDialog::instantiate_selected() {
 	TreeItem *selected = search_options->get_selected();
 

+ 2 - 1
editor/create_dialog.h

@@ -51,6 +51,7 @@ class CreateDialog : public ConfirmationDialog {
 	Tree *search_options = nullptr;
 
 	String base_type;
+	bool is_base_type_node = false;
 	String icon_fallback;
 	String preferred_search_result_type;
 
@@ -113,7 +114,7 @@ public:
 	Variant instantiate_selected();
 	String get_selected_type();
 
-	void set_base_type(const String &p_base) { base_type = p_base; }
+	void set_base_type(const String &p_base);
 	String get_base_type() const { return base_type; }
 	void select_base();