]> uap-core.de Git - note.git/commitdiff
add function for creating dialogs without a parent
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 10 May 2026 07:13:14 +0000 (09:13 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 10 May 2026 07:13:14 +0000 (09:13 +0200)
ui-rs/src/ui/window.rs

index ef29aff70df26a3c8e2699afb4ebf1c75f4d1cc9..47b42a2e11b71264afe25b7e9925495a099b6414 100644 (file)
@@ -32,7 +32,7 @@
 use std::ffi::{c_char, c_int, c_void};
 use std::ffi::CString;
 use std::marker::PhantomData;
-use crate::ui::{event, ffi, toolkit, AppContext, EventWrapper, UiActions, UiModel};
+use crate::ui::{event, ffi, toolkit, AppContext, EventWrapper, NoAppData, UiActions, UiModel};
 use crate::ui::ffi::{UiButtonArgs, UiCallback, UiContext, UiDestructor, UiDialogArgs, UiObject};
 use crate::ui::widget::widget_fn;
 
@@ -238,6 +238,23 @@ impl<T> toolkit::UiObject<T> {
     }
 }
 
+pub fn dialog_builder() -> DialogBuilder<NoAppData> {
+    DialogBuilder {
+        args: unsafe { ui_dialog_args_new() },
+        parent: std::ptr::null_mut(),
+        _marker: PhantomData,
+    }
+}
+
+pub fn dialog<F>(build: F)
+where
+    F: Fn(&mut DialogBuilder<NoAppData>),
+{
+    let mut builder = dialog_builder();
+    build(&mut builder);
+    builder.create();
+}
+
 
 /* ---------------------------------- C functions ---------------------------------- */