Browse Source

Merge pull request #42066 from dalexeev/output_copy

Improvement for the Copy button in the Output Log
Rémi Verschelde 5 years ago
parent
commit
915ac7360a
3 changed files with 18 additions and 3 deletions
  1. 9 1
      editor/editor_log.cpp
  2. 8 2
      scene/gui/rich_text_label.cpp
  3. 1 0
      scene/gui/rich_text_label.h

+ 9 - 1
editor/editor_log.cpp

@@ -79,7 +79,15 @@ void EditorLog::_clear_request() {
 }
 
 void EditorLog::_copy_request() {
-	log->selection_copy();
+	String text = log->get_selected_text();
+
+	if (text == "") {
+		text = log->get_text();
+	}
+
+	if (text != "") {
+		DisplayServer::get_singleton()->clipboard_set(text);
+	}
 }
 
 void EditorLog::clear() {

+ 8 - 2
scene/gui/rich_text_label.cpp

@@ -2529,9 +2529,9 @@ bool RichTextLabel::search(const String &p_string, bool p_from_selection, bool p
 	return false;
 }
 
-void RichTextLabel::selection_copy() {
+String RichTextLabel::get_selected_text() {
 	if (!selection.active || !selection.enabled) {
-		return;
+		return "";
 	}
 
 	String text;
@@ -2561,6 +2561,12 @@ void RichTextLabel::selection_copy() {
 		item = _get_next_item(item, true);
 	}
 
+	return text;
+}
+
+void RichTextLabel::selection_copy() {
+	String text = get_selected_text();
+
 	if (text != "") {
 		DisplayServer::get_singleton()->clipboard_set(text);
 	}

+ 1 - 0
scene/gui/rich_text_label.h

@@ -475,6 +475,7 @@ public:
 
 	void set_selection_enabled(bool p_enabled);
 	bool is_selection_enabled() const;
+	String get_selected_text();
 	void selection_copy();
 
 	Error parse_bbcode(const String &p_bbcode);