Bläddra i källkod

Merge pull request #9210 from jasongrout/mousecommand

Fix focus issues with command palette
Brian E. Granger 4 år sedan
förälder
incheckning
38d65d8eb5
2 ändrade filer med 15 tillägg och 7 borttagningar
  1. 15 4
      packages/apputils/src/commandpalette.ts
  2. 0 3
      tsconfigdoc.json

+ 15 - 4
packages/apputils/src/commandpalette.ts

@@ -102,8 +102,13 @@ export class ModalCommandPalette extends Panel {
       case 'keydown':
         this._evtKeydown(event as KeyboardEvent);
         break;
-      case 'blur':
-        this.hideAndReset();
+      case 'focus':
+        // if the focus shifted outside of this DOM element, hide and reset.
+        const target = event.target as HTMLElement;
+        if (!this.node.contains(target as HTMLElement)) {
+          event.stopPropagation();
+          this.hideAndReset();
+        }
         break;
       case 'contextmenu':
         event.preventDefault();
@@ -120,7 +125,6 @@ export class ModalCommandPalette extends Panel {
   protected onAfterAttach(msg: Message): void {
     this.node.addEventListener('keydown', this, true);
     this.node.addEventListener('contextmenu', this, true);
-    this.node.addEventListener('blur', this, true);
   }
 
   /**
@@ -129,7 +133,14 @@ export class ModalCommandPalette extends Panel {
   protected onAfterDetach(msg: Message): void {
     this.node.removeEventListener('keydown', this, true);
     this.node.removeEventListener('contextmenu', this, true);
-    this.node.removeEventListener('blur', this, true);
+  }
+
+  protected onBeforeHide(msg: Message): void {
+    document.removeEventListener('focus', this, true);
+  }
+
+  protected onAfterShow(msg: Message): void {
+    document.addEventListener('focus', this, true);
   }
 
   /**

+ 0 - 3
tsconfigdoc.json

@@ -230,9 +230,6 @@
     {
       "path": "./packages/statusbar-extension"
     },
-    {
-      "path": "./packages/tabmanager-extension"
-    },
     {
       "path": "./packages/terminal"
     },