diff options
| -rw-r--r-- | drivers/coreaudio/audio_driver_coreaudio.cpp | 2 | ||||
| -rw-r--r-- | editor/editor_help.cpp | 203 | ||||
| -rw-r--r-- | editor/editor_help.h | 25 | 
3 files changed, 119 insertions, 111 deletions
diff --git a/drivers/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp index 6db9aebeed..0b39f9ebc3 100644 --- a/drivers/coreaudio/audio_driver_coreaudio.cpp +++ b/drivers/coreaudio/audio_driver_coreaudio.cpp @@ -37,7 +37,7 @@  #define kOutputBus 0  #ifdef OSX_ENABLED -static OSStatus outputDeviceAddressCB(AudioObjectID inObjectID, UInt32 inNumberAddresses, const AudioObjectPropertyAddress *inAddresses, void *__nullable inClientData) { +static OSStatus outputDeviceAddressCB(AudioObjectID inObjectID, UInt32 inNumberAddresses, const AudioObjectPropertyAddress *inAddresses, void *inClientData) {  	AudioDriverCoreAudio *driver = (AudioDriverCoreAudio *)inClientData;  	driver->reopen(); diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index 198a52fef2..7f76cf1af2 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -81,162 +81,147 @@ void EditorHelpSearch::_sbox_input(const Ref<InputEvent> &p_ie) {  	}  } -class EditorHelpSearch::IncrementalSearch : public Reference { -	String term; -	TreeItem *root; +void EditorHelpSearch::IncrementalSearch::phase1(Map<String, DocData::ClassDoc>::Element *E) { -	EditorHelpSearch *search; -	Tree *search_options; +	if (E->key().findn(term) != -1) { -	DocData *doc; -	Ref<Texture> def_icon; - -	int phase; -	Map<String, DocData::ClassDoc>::Element *iterator; - -	void phase1(Map<String, DocData::ClassDoc>::Element *E) { - -		if (E->key().findn(term) != -1) { - -			TreeItem *item = search_options->create_item(root); -			item->set_metadata(0, "class_name:" + E->key()); -			item->set_text(0, E->key() + " (Class)"); -			if (search->has_icon(E->key(), "EditorIcons")) -				item->set_icon(0, search->get_icon(E->key(), "EditorIcons")); -			else -				item->set_icon(0, def_icon); -		} +		TreeItem *item = search_options->create_item(root); +		item->set_metadata(0, "class_name:" + E->key()); +		item->set_text(0, E->key() + " (Class)"); +		if (search->has_icon(E->key(), "EditorIcons")) +			item->set_icon(0, search->get_icon(E->key(), "EditorIcons")); +		else +			item->set_icon(0, def_icon);  	} +} -	void phase2(Map<String, DocData::ClassDoc>::Element *E) { +void EditorHelpSearch::IncrementalSearch::phase2(Map<String, DocData::ClassDoc>::Element *E) { -		DocData::ClassDoc &c = E->get(); +	DocData::ClassDoc &c = E->get(); -		Ref<Texture> cicon; -		if (search->has_icon(E->key(), "EditorIcons")) -			cicon = search->get_icon(E->key(), "EditorIcons"); -		else -			cicon = def_icon; +	Ref<Texture> cicon; +	if (search->has_icon(E->key(), "EditorIcons")) +		cicon = search->get_icon(E->key(), "EditorIcons"); +	else +		cicon = def_icon; -		for (int i = 0; i < c.methods.size(); i++) { -			if ((term.begins_with(".") && c.methods[i].name.begins_with(term.right(1))) || (term.ends_with("(") && c.methods[i].name.ends_with(term.left(term.length() - 1).strip_edges())) || (term.begins_with(".") && term.ends_with("(") && c.methods[i].name == term.substr(1, term.length() - 2).strip_edges()) || c.methods[i].name.findn(term) != -1) { +	for (int i = 0; i < c.methods.size(); i++) { +		if ((term.begins_with(".") && c.methods[i].name.begins_with(term.right(1))) || (term.ends_with("(") && c.methods[i].name.ends_with(term.left(term.length() - 1).strip_edges())) || (term.begins_with(".") && term.ends_with("(") && c.methods[i].name == term.substr(1, term.length() - 2).strip_edges()) || c.methods[i].name.findn(term) != -1) { -				TreeItem *item = search_options->create_item(root); -				item->set_metadata(0, "class_method:" + E->key() + ":" + c.methods[i].name); -				item->set_text(0, E->key() + "." + c.methods[i].name + " (Method)"); -				item->set_icon(0, cicon); -			} +			TreeItem *item = search_options->create_item(root); +			item->set_metadata(0, "class_method:" + E->key() + ":" + c.methods[i].name); +			item->set_text(0, E->key() + "." + c.methods[i].name + " (Method)"); +			item->set_icon(0, cicon);  		} +	} -		for (int i = 0; i < c.signals.size(); i++) { +	for (int i = 0; i < c.signals.size(); i++) { -			if (c.signals[i].name.findn(term) != -1) { +		if (c.signals[i].name.findn(term) != -1) { -				TreeItem *item = search_options->create_item(root); -				item->set_metadata(0, "class_signal:" + E->key() + ":" + c.signals[i].name); -				item->set_text(0, E->key() + "." + c.signals[i].name + " (Signal)"); -				item->set_icon(0, cicon); -			} +			TreeItem *item = search_options->create_item(root); +			item->set_metadata(0, "class_signal:" + E->key() + ":" + c.signals[i].name); +			item->set_text(0, E->key() + "." + c.signals[i].name + " (Signal)"); +			item->set_icon(0, cicon);  		} +	} -		for (int i = 0; i < c.constants.size(); i++) { +	for (int i = 0; i < c.constants.size(); i++) { -			if (c.constants[i].name.findn(term) != -1) { +		if (c.constants[i].name.findn(term) != -1) { -				TreeItem *item = search_options->create_item(root); -				item->set_metadata(0, "class_constant:" + E->key() + ":" + c.constants[i].name); -				item->set_text(0, E->key() + "." + c.constants[i].name + " (Constant)"); -				item->set_icon(0, cicon); -			} +			TreeItem *item = search_options->create_item(root); +			item->set_metadata(0, "class_constant:" + E->key() + ":" + c.constants[i].name); +			item->set_text(0, E->key() + "." + c.constants[i].name + " (Constant)"); +			item->set_icon(0, cicon);  		} +	} -		for (int i = 0; i < c.properties.size(); i++) { +	for (int i = 0; i < c.properties.size(); i++) { -			if (c.properties[i].name.findn(term) != -1) { +		if (c.properties[i].name.findn(term) != -1) { -				TreeItem *item = search_options->create_item(root); -				item->set_metadata(0, "class_property:" + E->key() + ":" + c.properties[i].name); -				item->set_text(0, E->key() + "." + c.properties[i].name + " (Property)"); -				item->set_icon(0, cicon); -			} +			TreeItem *item = search_options->create_item(root); +			item->set_metadata(0, "class_property:" + E->key() + ":" + c.properties[i].name); +			item->set_text(0, E->key() + "." + c.properties[i].name + " (Property)"); +			item->set_icon(0, cicon);  		} +	} -		for (int i = 0; i < c.theme_properties.size(); i++) { +	for (int i = 0; i < c.theme_properties.size(); i++) { -			if (c.theme_properties[i].name.findn(term) != -1) { +		if (c.theme_properties[i].name.findn(term) != -1) { -				TreeItem *item = search_options->create_item(root); -				item->set_metadata(0, "class_theme_item:" + E->key() + ":" + c.theme_properties[i].name); -				item->set_text(0, E->key() + "." + c.theme_properties[i].name + " (Theme Item)"); -				item->set_icon(0, cicon); -			} +			TreeItem *item = search_options->create_item(root); +			item->set_metadata(0, "class_theme_item:" + E->key() + ":" + c.theme_properties[i].name); +			item->set_text(0, E->key() + "." + c.theme_properties[i].name + " (Theme Item)"); +			item->set_icon(0, cicon);  		}  	} +} -	bool slice() { +bool EditorHelpSearch::IncrementalSearch::slice() { -		if (phase > 2) -			return true; +	if (phase > 2) +		return true; -		if (iterator) { +	if (iterator) { -			switch (phase) { +		switch (phase) { -				case 1: { -					phase1(iterator); -				} break; -				case 2: { -					phase2(iterator); -				} break; -				default: { -					WARN_PRINT("illegal phase in IncrementalSearch"); -					return true; -				} +			case 1: { +				phase1(iterator); +			} break; +			case 2: { +				phase2(iterator); +			} break; +			default: { +				WARN_PRINT("illegal phase in IncrementalSearch"); +				return true;  			} - -			iterator = iterator->next(); -		} else { - -			phase += 1; -			iterator = doc->class_list.front();  		} -		return false; +		iterator = iterator->next(); +	} else { + +		phase += 1; +		iterator = doc->class_list.front();  	} -public: -	IncrementalSearch(EditorHelpSearch *p_search, Tree *p_search_options, const String &p_term) : -			search(p_search), -			search_options(p_search_options) { +	return false; +} -		def_icon = search->get_icon("Node", "EditorIcons"); -		doc = EditorHelp::get_doc_data(); +EditorHelpSearch::IncrementalSearch::IncrementalSearch(EditorHelpSearch *p_search, Tree *p_search_options, const String &p_term) : +		search(p_search), +		search_options(p_search_options) { -		term = p_term; +	def_icon = search->get_icon("Node", "EditorIcons"); +	doc = EditorHelp::get_doc_data(); -		root = search_options->create_item(); -		phase = 0; -		iterator = 0; -	} +	term = p_term; -	bool empty() const { +	root = search_options->create_item(); +	phase = 0; +	iterator = 0; +} -		return root->get_children() == NULL; -	} +bool EditorHelpSearch::IncrementalSearch::empty() const { -	bool work(uint64_t slot = 1000000 / 10) { +	return root->get_children() == NULL; +} -		const uint64_t until = OS::get_singleton()->get_ticks_usec() + slot; +bool EditorHelpSearch::IncrementalSearch::work(uint64_t slot) { -		while (!slice()) { +	const uint64_t until = OS::get_singleton()->get_ticks_usec() + slot; -			if (OS::get_singleton()->get_ticks_usec() > until) -				return false; -		} +	while (!slice()) { -		return true; +		if (OS::get_singleton()->get_ticks_usec() > until) +			return false;  	} -}; + +	return true; +}  void EditorHelpSearch::_update_search() {  	search_options->clear(); diff --git a/editor/editor_help.h b/editor/editor_help.h index db4c33afb0..aa84aa611f 100644 --- a/editor/editor_help.h +++ b/editor/editor_help.h @@ -54,7 +54,30 @@ class EditorHelpSearch : public ConfirmationDialog {  	Tree *search_options;  	String base_type; -	class IncrementalSearch; +	class IncrementalSearch : public Reference { +		String term; +		TreeItem *root; + +		EditorHelpSearch *search; +		Tree *search_options; + +		DocData *doc; +		Ref<Texture> def_icon; + +		int phase; +		Map<String, DocData::ClassDoc>::Element *iterator; + +		void phase1(Map<String, DocData::ClassDoc>::Element *E); +		void phase2(Map<String, DocData::ClassDoc>::Element *E); +		bool slice(); + +	public: +		IncrementalSearch(EditorHelpSearch *p_search, Tree *p_search_options, const String &p_term); + +		bool empty() const; +		bool work(uint64_t slot = 1000000 / 10); +	}; +  	Ref<IncrementalSearch> search;  	void _update_search();  |