Quellcode durchsuchen

Tighten tooltip dismissal semantics.

Afshin Darian vor 8 Jahren
Ursprung
Commit
0cc1c31063
2 geänderte Dateien mit 17 neuen und 11 gelöschten Zeilen
  1. 4 0
      src/tooltip/index.css
  2. 13 11
      src/tooltip/widget.ts

+ 4 - 0
src/tooltip/index.css

@@ -14,6 +14,10 @@
   padding: 4px;
 }
 
+.jp-Tooltip:focus {
+  outline: 0;
+}
+
 .jp-Tooltip pre {
   margin: 0;
 }

+ 13 - 11
src/tooltip/widget.ts

@@ -114,8 +114,20 @@ class TooltipWidget extends Widget {
     }
     switch (event.type) {
     case 'keydown':
+      if (this.node.contains(event.target as HTMLElement)) {
+        if ((event as KeyboardEvent).keyCode === 27) { // Escape key
+          this.dispose();
+        }
+        return;
+      }
+      this.dispose();
+      break;
     case 'mousedown':
-      this._dismiss(event);
+      if (this.node.contains(event.target as HTMLElement)) {
+        this.activate();
+        return;
+      }
+      this.dispose();
       break;
     case 'scroll':
       this._evtScroll(event as MouseEvent);
@@ -160,16 +172,6 @@ class TooltipWidget extends Widget {
     super.onUpdateRequest(msg);
   }
 
-  /**
-   * Dismiss the tooltip if necessary.
-   */
-  private _dismiss(event: Event): void {
-    if (this.node.contains(event.target as HTMLElement)) {
-      return;
-    }
-    this.dispose();
-  }
-
   /**
    * Handle scroll events for the widget
    */