diff options
| -rw-r--r-- | modules/gdscript/doc_classes/@GDScript.xml | 14 | ||||
| -rw-r--r-- | platform/linuxbsd/tts_linux.cpp | 9 | ||||
| -rw-r--r-- | platform/linuxbsd/tts_linux.h | 2 | ||||
| -rw-r--r-- | scene/gui/label.cpp | 5 | 
4 files changed, 20 insertions, 10 deletions
diff --git a/modules/gdscript/doc_classes/@GDScript.xml b/modules/gdscript/doc_classes/@GDScript.xml index 08c8763493..045505b720 100644 --- a/modules/gdscript/doc_classes/@GDScript.xml +++ b/modules/gdscript/doc_classes/@GDScript.xml @@ -126,6 +126,20 @@  			<param index="0" name="value" type="Variant" />  			<param index="1" name="type" type="Variant" />  			<description> +				Returns [code]true[/code] if [param value] is an instance of [param type]. The [param type] value must be one of the following: +				- A constant from the [enum Variant.Type] enumeration, for example [constant TYPE_INT]. +				- An [Object]-derived class which exists in [ClassDB], for example [Node]. +				- A [Script] (you can use any class, including inner one). +				Unlike the right operand of the [code]is[/code] operator, [param type] can be a non-constant value. The [code]is[/code] operator supports more features (such as typed arrays) and is more performant. Use the operator instead of this method if you do not need dynamic type checking. +				Examples: +				[codeblock] +				print(is_instance_of(a, TYPE_INT)) +				print(is_instance_of(a, Node)) +				print(is_instance_of(a, MyClass)) +				print(is_instance_of(a, MyClass.InnerClass)) +				[/codeblock] +				[b]Note:[/b] If [param value] and/or [param type] are freed objects (see [method @GlobalScope.is_instance_valid]), or [param type] is not one of the above options, this method will raise an runtime error. +				See also [method @GlobalScope.typeof], [method type_exists], [method Array.is_same_typed] (and other [Array] methods).  			</description>  		</method>  		<method name="len"> diff --git a/platform/linuxbsd/tts_linux.cpp b/platform/linuxbsd/tts_linux.cpp index 6b8584ef6c..ce0199e87f 100644 --- a/platform/linuxbsd/tts_linux.cpp +++ b/platform/linuxbsd/tts_linux.cpp @@ -35,11 +35,6 @@  TTS_Linux *TTS_Linux::singleton = nullptr; -void TTS_Linux::_bind_methods() { -	ClassDB::bind_method(D_METHOD("_speech_event", "msg_id", "client_id", "type"), &TTS_Linux::_speech_event); -	ClassDB::bind_method(D_METHOD("_speech_index_mark", "msg_id", "client_id", "type", "index_mark"), &TTS_Linux::_speech_index_mark); -} -  void TTS_Linux::speech_init_thread_func(void *p_userdata) {  	TTS_Linux *tts = (TTS_Linux *)p_userdata;  	if (tts) { @@ -82,7 +77,7 @@ void TTS_Linux::speech_init_thread_func(void *p_userdata) {  void TTS_Linux::speech_event_index_mark(size_t p_msg_id, size_t p_client_id, SPDNotificationType p_type, char *p_index_mark) {  	TTS_Linux *tts = TTS_Linux::get_singleton();  	if (tts) { -		tts->call_deferred(SNAME("_speech_index_mark"), p_msg_id, p_client_id, (int)p_type, String::utf8(p_index_mark)); +		callable_mp(tts, &TTS_Linux::_speech_index_mark).call_deferred(p_msg_id, p_client_id, (int)p_type, String::utf8(p_index_mark));  	}  } @@ -97,7 +92,7 @@ void TTS_Linux::_speech_index_mark(size_t p_msg_id, size_t p_client_id, int p_ty  void TTS_Linux::speech_event_callback(size_t p_msg_id, size_t p_client_id, SPDNotificationType p_type) {  	TTS_Linux *tts = TTS_Linux::get_singleton();  	if (tts) { -		tts->call_deferred(SNAME("_speech_event"), p_msg_id, p_client_id, (int)p_type); +		callable_mp(tts, &TTS_Linux::_speech_event).call_deferred(p_msg_id, p_client_id, (int)p_type);  	}  } diff --git a/platform/linuxbsd/tts_linux.h b/platform/linuxbsd/tts_linux.h index 3fcbe3207b..4134f8fa2f 100644 --- a/platform/linuxbsd/tts_linux.h +++ b/platform/linuxbsd/tts_linux.h @@ -46,7 +46,6 @@  #endif  class TTS_Linux : public Object { -	GDCLASS(TTS_Linux, Object);  	_THREAD_SAFE_CLASS_  	List<DisplayServer::TTSUtterance> queue; @@ -65,7 +64,6 @@ class TTS_Linux : public Object {  	static TTS_Linux *singleton;  protected: -	static void _bind_methods();  	void _speech_event(size_t p_msg_id, size_t p_client_id, int p_type);  	void _speech_index_mark(size_t p_msg_id, size_t p_client_id, int p_type, const String &p_index_mark); diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp index 81426158a2..b861d7af01 100644 --- a/scene/gui/label.cpp +++ b/scene/gui/label.cpp @@ -209,7 +209,10 @@ bool Label::_shape() {  				// Fill after min_size calculation. -				int visible_lines = get_visible_line_count(); +				int visible_lines = lines_rid.size(); +				if (max_lines_visible >= 0 && visible_lines > max_lines_visible) { +					visible_lines = max_lines_visible; +				}  				if (autowrap_mode != TextServer::AUTOWRAP_OFF) {  					bool lines_hidden = visible_lines > 0 && visible_lines < lines_rid.size();  					if (lines_hidden) {  |