diff options
author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2023-08-10 09:48:53 +0300 |
---|---|---|
committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2023-08-10 09:48:53 +0300 |
commit | 9a6ecda591970fc7292336c1af9ab73088d27e87 (patch) | |
tree | 49b01c5234f72e4c591e7b1d443dba9a195a95f9 /editor | |
parent | 013e8e3afb982d4b230f0039b6dc248b48794ab9 (diff) | |
download | redot-engine-9a6ecda591970fc7292336c1af9ab73088d27e87.tar.gz |
[Editor Log] Clear rich print tags only after the last line.
Diffstat (limited to 'editor')
-rw-r--r-- | editor/editor_log.cpp | 13 | ||||
-rw-r--r-- | editor/editor_log.h | 8 |
2 files changed, 13 insertions, 8 deletions
diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp index 1bc9f00f08..4c2f6b3176 100644 --- a/editor/editor_log.cpp +++ b/editor/editor_log.cpp @@ -212,7 +212,7 @@ void EditorLog::clear() { _clear_request(); } -void EditorLog::_process_message(const String &p_msg, MessageType p_type) { +void EditorLog::_process_message(const String &p_msg, MessageType p_type, bool p_clear) { if (messages.size() > 0 && messages[messages.size() - 1].text == p_msg && messages[messages.size() - 1].type == p_type) { // If previous message is the same as the new one, increase previous count rather than adding another // instance to the messages list. @@ -222,7 +222,7 @@ void EditorLog::_process_message(const String &p_msg, MessageType p_type) { _add_log_line(previous, collapse); } else { // Different message to the previous one received. - LogMessage message(p_msg, p_type); + LogMessage message(p_msg, p_type, p_clear); _add_log_line(message); messages.push_back(message); } @@ -237,9 +237,10 @@ void EditorLog::add_message(const String &p_msg, MessageType p_type) { // search functionality (see the comments on the PR above for more details). This behavior // also matches that of other IDE's. Vector<String> lines = p_msg.split("\n", true); + int line_count = lines.size(); - for (int i = 0; i < lines.size(); i++) { - _process_message(lines[i], p_type); + for (int i = 0; i < line_count; i++) { + _process_message(lines[i], p_type, i == line_count - 1); } } @@ -338,7 +339,9 @@ void EditorLog::_add_log_line(LogMessage &p_message, bool p_replace_previous) { } else { log->add_text(p_message.text); } - log->pop_all(); // Pop all unclosed tags. + if (p_message.clear || p_message.type != MSG_TYPE_STD_RICH) { + log->pop_all(); // Pop all unclosed tags. + } log->add_newline(); if (p_replace_previous) { diff --git a/editor/editor_log.h b/editor/editor_log.h index b875066afa..07f3a25c3e 100644 --- a/editor/editor_log.h +++ b/editor/editor_log.h @@ -60,12 +60,14 @@ private: String text; MessageType type; int count = 1; + bool clear = true; LogMessage() {} - LogMessage(const String p_text, MessageType p_type) : + LogMessage(const String p_text, MessageType p_type, bool p_clear) : text(p_text), - type(p_type) { + type(p_type), + clear(p_clear) { } }; @@ -166,7 +168,7 @@ private: void _set_search_visible(bool p_visible); void _search_changed(const String &p_text); - void _process_message(const String &p_msg, MessageType p_type); + void _process_message(const String &p_msg, MessageType p_type, bool p_clear); void _reset_message_counts(); void _set_collapse(bool p_collapse); |