From ef6909e624dfb10b572d208dc6448ef5dd63669a Mon Sep 17 00:00:00 2001 From: dtzxporter Date: Thu, 8 Feb 2024 00:38:50 -0500 Subject: [PATCH] Attempt to fix issue with modal windows. --- src/backend/macos/file_dialog/panel_ffi.rs | 2 +- src/backend/macos/message_dialog.rs | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) 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]