slint icon indicating copy to clipboard operation
slint copied to clipboard

Callbacks for invoke_from_event_loop() and Weak::upgrade_in_event_loop() should support return values

Open npwoods opened this issue 8 months ago • 3 comments

Is there a reason that callbacks for invoke_from_event_loop() and Weak::upgrade_in_event_loop() do not support return values?

Currently I have to write code that looks like this:

let cancelled = Arc::new(AtomicBool::new(false));
let cancelled_clone = cancelled.clone();

dialog_weak
	.upgrade_in_event_loop(move |dialog| {
		...
		cancelled_clone.store(dialog.get_cancelled(), Ordering::Relaxed);
	})
	.unwrap();
let cancelled = cancelled.load(Ordering::Relaxed);

It would be great if I could do this:

let cancelled = dialog_weak
	.upgrade_in_event_loop(move |dialog| {
		...
		dialog.get_cancelled()
	})
	.unwrap();

Of course, the return value would have to support Send but that sort of thing goes with the territory.

npwoods avatar Jun 01 '24 13:06 npwoods