Bladeren bron

fix(core): panic on menu event with minimized windows, closes #3902 (#3918)

Lucas Fernandes Nogueira 3 jaren geleden
bovenliggende
commit
70ff55c1aa
2 gewijzigde bestanden met toevoegingen van 18 en 1 verwijderingen
  1. 6 0
      .changes/fix-menu-event-macos.md
  2. 12 1
      core/tauri-runtime-wry/src/lib.rs

+ 6 - 0
.changes/fix-menu-event-macos.md

@@ -0,0 +1,6 @@
+---
+"tauri": patch
+"tauri-runtime-wry": patch
+---
+
+Fixes a panic when a menu event is triggered when all windows are minimized on macOS.

+ 12 - 1
core/tauri-runtime-wry/src/lib.rs

@@ -2395,7 +2395,18 @@ fn handle_event_loop<T: UserEvent>(
       origin: MenuType::MenuBar,
       ..
     } => {
-      let window_id = window_id.unwrap(); // always Some on MenuBar event
+      #[allow(unused_mut)]
+      let mut window_id = window_id.unwrap(); // always Some on MenuBar event
+
+      #[cfg(target_os = "macos")]
+      {
+        // safety: we're only checking to see if the window_id is 0
+        // which is the value sent by macOS when the window is minimized (NSApplication::sharedApplication::mainWindow is null)
+        if window_id == unsafe { WindowId::dummy() } {
+          window_id = *webview_id_map.0.lock().unwrap().keys().next().unwrap();
+        }
+      }
+
       let event = MenuEvent {
         menu_item_id: menu_id.0,
       };