Преглед изворни кода

Explore: Fix selection/copy of log lines (#17121)

This adds some logic to identify if the user is selecting 
text and if so disables parsing of log messages on hover. 
This should resolve the issue of selecting log lines to be 
copied and the selection is truncated.

Fixes #17072
Marcus Efraimsson пре 6 година
родитељ
комит
0e210dc271
1 измењених фајлова са 15 додато и 1 уклоњено
  1. 15 1
      public/app/features/explore/LogRow.tsx

+ 15 - 1
public/app/features/explore/LogRow.tsx

@@ -130,7 +130,7 @@ export class LogRow extends PureComponent<Props, State> {
   };
 
   onMouseOverMessage = () => {
-    if (this.state.showContext) {
+    if (this.state.showContext || this.isTextSelected()) {
       // When showing context we don't want to the LogRow rerender as it will mess up state of context block
       // making the "after" context to be scrolled to the top, what is desired only on open
       // The log row message needs to be refactored to separate component that encapsulates parsing and parsed message state
@@ -161,6 +161,20 @@ export class LogRow extends PureComponent<Props, State> {
     }
   };
 
+  isTextSelected() {
+    if (!window.getSelection) {
+      return false;
+    }
+
+    const selection = window.getSelection();
+
+    if (!selection) {
+      return false;
+    }
+
+    return selection.anchorNode !== null && selection.isCollapsed === false;
+  }
+
   toggleContext = () => {
     this.setState(state => {
       return {