diff --git a/libadwaita/src/alert_dialog.rs b/libadwaita/src/alert_dialog.rs index 45923b2972ebf7784b1e7a40622b04fcb2dc5fb4..8f689860ad48d5ab5d75cb7b4127b5680636a239 100644 --- a/libadwaita/src/alert_dialog.rs +++ b/libadwaita/src/alert_dialog.rs @@ -36,7 +36,7 @@ pub trait AlertDialogExtManual: sealed::Sealed + IsA + 'static { #[doc(alias = "adw_alert_dialog_choose")] fn choose( self, - parent: &impl IsA, + parent: Option<&impl IsA>, cancellable: Option<&impl IsA>, callback: P, ) { @@ -72,7 +72,7 @@ pub trait AlertDialogExtManual: sealed::Sealed + IsA + 'static { unsafe { ffi::adw_alert_dialog_choose( self.upcast().into_glib_ptr(), - parent.as_ref().to_glib_none().0, + parent.map(|p| p.as_ref()).to_glib_none().0, cancellable.map(|p| p.as_ref()).to_glib_none().0, Some(callback), Box_::into_raw(user_data) as *mut _, @@ -82,15 +82,19 @@ pub trait AlertDialogExtManual: sealed::Sealed + IsA + 'static { fn choose_future( self, - parent: &impl IsA, + parent: Option<&impl IsA>, ) -> Pin + 'static>> { - let parent = parent.clone(); + let parent = parent.map(ToOwned::to_owned); Box_::pin(gio::GioFuture::new( &self, move |obj: &Self, cancellable, send| { - obj.clone().choose(&parent, Some(cancellable), move |res| { - send.resolve(res); - }); + obj.clone().choose( + parent.as_ref().map(::std::borrow::Borrow::borrow), + Some(cancellable), + move |res| { + send.resolve(res); + }, + ); }, )) }