Skip to content

Commit

Permalink
[Editor Log] Clear rich print tags only after the last line.
Browse files Browse the repository at this point in the history
  • Loading branch information
bruvzg committed Aug 10, 2023
1 parent 013e8e3 commit 9a6ecda
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
13 changes: 8 additions & 5 deletions editor/editor_log.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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);
}
Expand All @@ -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);
}
}

Expand Down Expand Up @@ -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) {
Expand Down
8 changes: 5 additions & 3 deletions editor/editor_log.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,14 @@ class EditorLog : public HBoxContainer {
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) {
}
};

Expand Down Expand Up @@ -166,7 +168,7 @@ class EditorLog : public HBoxContainer {
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);
Expand Down

0 comments on commit 9a6ecda

Please sign in to comment.