summaryrefslogtreecommitdiffstats
path: root/editor
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2023-08-10 09:48:53 +0300
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2023-08-10 09:48:53 +0300
commit9a6ecda591970fc7292336c1af9ab73088d27e87 (patch)
tree49b01c5234f72e4c591e7b1d443dba9a195a95f9 /editor
parent013e8e3afb982d4b230f0039b6dc248b48794ab9 (diff)
downloadredot-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.cpp13
-rw-r--r--editor/editor_log.h8
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);