]> uap-core.de Git - note.git/commitdiff
add UiContext to AppContext
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 26 Apr 2026 11:06:07 +0000 (13:06 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 26 Apr 2026 11:06:07 +0000 (13:06 +0200)
ui-rs/src/ui/application.rs

index 85ec35f9b2c0935ea9ea178850d21b2fd3fb297d..1ab0aedc64cbfda7c36d03c0e4c0fdfba57e6f28 100644 (file)
@@ -31,7 +31,7 @@
 use std::ffi::{c_char, c_int, c_void, CString};
 use std::marker::PhantomData;
 use crate::ui::ffi::{UiCallback, UiEvent};
-use crate::ui::{UiActions, UiModel};
+use crate::ui::{toolkit, ui_global_context, UiActions, UiModel};
 
 pub trait Application<T: UiModel + UiActions> {
     fn on_startup(&mut self, app: &AppContext<T>);
@@ -40,6 +40,7 @@ pub trait Application<T: UiModel + UiActions> {
 }
 
 pub struct AppContext<T: UiModel + UiActions> {
+    pub ctx: toolkit::UiContext,
     _marker: PhantomData<T>,
 }
 
@@ -55,7 +56,9 @@ extern "C" fn app_startup<T: UiModel + UiActions>(_event: *const UiEvent, data:
     unsafe {
         let app_ptr = data as *mut AppWrapper<T>;
         let app_ref: &mut AppWrapper<T> = &mut *app_ptr;
+        let global_ctx = toolkit::UiContext::from_ptr(ui_global_context());
         let ctx = AppContext::<T> {
+            ctx: global_ctx,
             _marker: PhantomData,
         };
         app_ref.app.on_startup(&ctx);
@@ -66,7 +69,9 @@ extern "C" fn app_exit<T: UiModel + UiActions>(_event: *const UiEvent, data: *mu
     unsafe {
         let app_ptr = data as *mut AppWrapper<T>;
         let app_ref: &mut AppWrapper<T> = &mut *app_ptr;
+        let global_ctx = toolkit::UiContext::from_ptr(ui_global_context());
         let ctx = AppContext::<T> {
+            ctx: global_ctx,
             _marker: PhantomData,
         };
         app_ref.app.on_exit(&ctx);