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