From b5d9b7a32bb0835b45e34b1a12def2426acd1aac Mon Sep 17 00:00:00 2001 From: Chaosus Date: Tue, 2 Jun 2026 16:19:24 +0300 Subject: [PATCH] Properly update shader text syntax highlighting (for disabled regions) --- editor/shader/text_shader_editor.cpp | 1 + scene/gui/text_edit.cpp | 13 +++++++++++-- scene/gui/text_edit.h | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/editor/shader/text_shader_editor.cpp b/editor/shader/text_shader_editor.cpp index 569da0ca5d..3f1916a175 100644 --- a/editor/shader/text_shader_editor.cpp +++ b/editor/shader/text_shader_editor.cpp @@ -1273,6 +1273,7 @@ void ShaderTextEditor::_validate_script() { syntax_highlighter->add_disabled_branch_region(Point2i(region.from_line, region.to_line)); } } + syntax_highlighter->emit_changed(); set_error(""); set_error_count(0); diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index a8c11414c0..cd092bd4ff 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -7029,12 +7029,16 @@ void TextEdit::set_syntax_highlighter(Ref p_syntax_highlighte return; } + if (syntax_highlighter.is_valid()) { + syntax_highlighter->disconnect_changed(callable_mp(this, &TextEdit::_syntax_highlighter_changed)); + } + syntax_highlighter = p_syntax_highlighter; if (syntax_highlighter.is_valid()) { syntax_highlighter->set_text_edit(this); + syntax_highlighter->connect_changed(callable_mp(this, &TextEdit::_syntax_highlighter_changed)); } - _clear_syntax_highlighting_cache(); - queue_redraw(); + _syntax_highlighter_changed(); } Ref TextEdit::get_syntax_highlighter() const { @@ -9109,6 +9113,11 @@ void TextEdit::_clear_syntax_highlighting_cache() { syntax_highlighting_cache.clear(); } +void TextEdit::_syntax_highlighter_changed() { + _clear_syntax_highlighting_cache(); + queue_redraw(); +} + /* Deprecated. */ #ifndef DISABLE_DEPRECATED Vector TextEdit::get_caret_index_edit_order() { diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 6f3cd91799..8470cccd39 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -603,6 +603,7 @@ private: Vector> _get_line_syntax_highlighting(int p_line); void _clear_syntax_highlighting_cache(); + void _syntax_highlighter_changed(); /* Visual. */ struct ThemeCache {