1use rusteal_ffi::{UClassHandle, UObjectHandle};
2
3use crate::error::{RustealError, RustealResult, check_ffi};
4use crate::ffi_dispatch;
5
6pub fn create_widget_raw(
7 owning_object: UObjectHandle,
8 widget_class: UClassHandle,
9) -> RustealResult<UObjectHandle> {
10 let result = unsafe { ffi_dispatch::widget_create_widget(owning_object, widget_class) };
11
12 if result.is_null() {
13 Err(RustealError::InvalidOperation(
14 "create_widget returned null".into(),
15 ))
16 } else {
17 Ok(result)
18 }
19}
20
21pub fn set_root_widget_raw(
22 user_widget: UObjectHandle,
23 root_widget: UObjectHandle,
24) -> RustealResult<()> {
25 check_ffi(unsafe { ffi_dispatch::widget_set_root_widget(user_widget, root_widget) })
26}
27
28pub fn get_widget_tree_raw(user_widget: UObjectHandle) -> RustealResult<UObjectHandle> {
29 let result = unsafe { ffi_dispatch::widget_get_widget_tree(user_widget) };
30
31 if result.is_null() {
32 Err(RustealError::InvalidOperation(
33 "get_widget_tree returned null".into(),
34 ))
35 } else {
36 Ok(result)
37 }
38}