Skip to main content

rusteal_core/
widget.rs

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}