Browse Source

fix: win.closeFilePreview recreates panel when called twice (#45663)

* fix: close quick look during tests on macOS

Co-authored-by: Samuel Maddock <[email protected]>

* use longer delay :shrug:

Co-authored-by: Samuel Maddock <[email protected]>

* fix: sharedPreviewPanel being recreated on close

Co-authored-by: Samuel Maddock <[email protected]>

* test: ensure preview panel gets closed

Co-authored-by: Samuel Maddock <[email protected]>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Samuel Maddock <[email protected]>
trop[bot] 2 months ago
parent
commit
2e256e301d
2 changed files with 5 additions and 1 deletions
  1. 4 1
      shell/browser/native_window_mac.mm
  2. 1 0
      spec/api-browser-window-spec.ts

+ 4 - 1
shell/browser/native_window_mac.mm

@@ -1556,8 +1556,11 @@ void NativeWindowMac::PreviewFile(const std::string& path,
 }
 
 void NativeWindowMac::CloseFilePreview() {
-  if ([QLPreviewPanel sharedPreviewPanelExists]) {
+  // Need to be careful about checking [QLPreviewPanel sharedPreviewPanel] as
+  // simply accessing it will cause it to reinitialize and reappear.
+  if ([QLPreviewPanel sharedPreviewPanelExists] && preview_item_) {
     [[QLPreviewPanel sharedPreviewPanel] close];
+    preview_item_ = nil;
   }
 }
 

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

@@ -6223,6 +6223,7 @@ describe('BrowserWindow module', () => {
       w.previewFile(__filename);
       await setTimeout(500);
       expect(showCalled).to.equal(false, 'should not have called show twice');
+      w.closeFilePreview();
     });
   });