diff --git a/src/backend/macos/file_dialog/panel_ffi.rs b/src/backend/macos/file_dialog/panel_ffi.rs index fe722b8..83bb3f3 100644 --- a/src/backend/macos/file_dialog/panel_ffi.rs +++ b/src/backend/macos/file_dialog/panel_ffi.rs @@ -66,7 +66,7 @@ impl Panel { pub fn run_modal(&self) -> i32 { if let Some(parent) = self.parent.clone() { - let completion = { block::ConcreteBlock::new(|_: u32| {}) }; + let completion = { block::ConcreteBlock::new(|_: isize| {}) }; unsafe { msg_send![self.panel, beginSheetModalForWindow: parent completionHandler: &completion] diff --git a/src/backend/macos/message_dialog.rs b/src/backend/macos/message_dialog.rs index 586d1cc..b75dd63 100644 --- a/src/backend/macos/message_dialog.rs +++ b/src/backend/macos/message_dialog.rs @@ -10,7 +10,7 @@ use super::{ AsModal, }; -use super::utils::{INSWindow, NSWindow}; +use super::utils::{INSApplication, INSWindow, NSApplication, NSWindow}; use objc::runtime::Object; use objc::{class, msg_send, sel, sel_impl}; use objc_foundation::{INSString, NSString}; @@ -104,7 +104,13 @@ impl NSAlert { pub fn run(mut self) -> MessageDialogResult { if let Some(parent) = self.parent.take() { - let completion = { block::ConcreteBlock::new(|_: u32| {}) }; + let completion = { + block::ConcreteBlock::new(|result: isize| { + let _: () = unsafe { + msg_send![NSApplication::shared_application(), stopModalWithCode: result] + }; + }) + }; unsafe { msg_send![self.alert, beginSheetModalForWindow: parent completionHandler: &completion]