1use rusteal_ffi::{UClassHandle, UObjectHandle};
5
6use crate::error::{check_ffi, RustealError, RustealResult};
7use crate::ffi_dispatch;
8
9pub fn create_widget_raw(
14 owning_object: UObjectHandle,
15 widget_class: UClassHandle,
16) -> RustealResult<UObjectHandle> {
17 let result = unsafe {
18 ffi_dispatch::widget_create_widget(owning_object, widget_class)
19 };
20 if result.is_null() {
21 Err(RustealError::InvalidOperation("create_widget returned null".into()))
22 } else {
23 Ok(result)
24 }
25}
26
27pub fn set_root_widget_raw(
29 user_widget: UObjectHandle,
30 root_widget: UObjectHandle,
31) -> RustealResult<()> {
32 check_ffi(unsafe {
33 ffi_dispatch::widget_set_root_widget(user_widget, root_widget)
34 })
35}
36
37pub fn get_widget_tree_raw(
39 user_widget: UObjectHandle,
40) -> RustealResult<UObjectHandle> {
41 let result = unsafe {
42 ffi_dispatch::widget_get_widget_tree(user_widget)
43 };
44 if result.is_null() {
45 Err(RustealError::InvalidOperation("get_widget_tree returned null".into()))
46 } else {
47 Ok(result)
48 }
49}