Browse Source

fix: don't set delegate for `QLPreviewPanel` (#37578)

fix: don't set delegate for QLPreviewPanel

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Jeremy Spiegel <[email protected]>
trop[bot] 2 years ago
parent
commit
080fb8e648
2 changed files with 16 additions and 2 deletions
  1. 0 2
      shell/browser/ui/cocoa/electron_ns_window.mm
  2. 16 0
      spec/api-browser-window-spec.ts

+ 0 - 2
shell/browser/ui/cocoa/electron_ns_window.mm

@@ -276,12 +276,10 @@ void SwizzleMouseDown(NSView* frame_view,
 }
 
 - (void)beginPreviewPanelControl:(QLPreviewPanel*)panel {
-  panel.delegate = [self delegate];
   panel.dataSource = static_cast<id<QLPreviewPanelDataSource>>([self delegate]);
 }
 
 - (void)endPreviewPanelControl:(QLPreviewPanel*)panel {
-  panel.delegate = nil;
   panel.dataSource = nil;
 }
 

+ 16 - 0
spec/api-browser-window-spec.ts

@@ -5251,6 +5251,22 @@ describe('BrowserWindow module', () => {
         w.closeFilePreview();
       }).to.not.throw();
     });
+
+    it('should not call BrowserWindow show event', async () => {
+      const w = new BrowserWindow({ show: false });
+      const shown = emittedOnce(w, 'show');
+      w.show();
+      await shown;
+
+      let showCalled = false;
+      w.on('show', () => {
+        showCalled = true;
+      });
+
+      w.previewFile(__filename);
+      await delay(500);
+      expect(showCalled).to.equal(false, 'should not have called show twice');
+    });
   });
 
   // TODO (jkleinsc) renable these tests on mas arm64