From 8e9f9922a23c9da35f7ae2aac1ccb873b411cffd Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Thu, 25 Sep 2025 17:02:30 +0200 Subject: [PATCH] add methods for setting/unsetting context states --- .../src/main/java/de/unixwork/ui/Context.java | 18 ++++++++++++++++++ .../main/java/de/unixwork/ui/ToolkitFuncs.java | 9 +++++++++ 2 files changed, 27 insertions(+) diff --git a/ui-java/src/main/java/de/unixwork/ui/Context.java b/ui-java/src/main/java/de/unixwork/ui/Context.java index b671cd9..edf47e4 100644 --- a/ui-java/src/main/java/de/unixwork/ui/Context.java +++ b/ui-java/src/main/java/de/unixwork/ui/Context.java @@ -161,6 +161,24 @@ public abstract class Context { } } + public void setState(int state) { + ToolkitFuncs ui = ToolkitFuncs.getInstance(); + try { + ui.set_group.invoke(ptr, state); + } catch (Throwable e) { + throw new RuntimeException(e); + } + } + + public void unsetState(int state) { + ToolkitFuncs ui = ToolkitFuncs.getInstance(); + try { + ui.unset_group.invoke(ptr, state); + } catch (Throwable e) { + throw new RuntimeException(e); + } + } + public Arena getArena() { return arena; } diff --git a/ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java b/ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java index 4cbc59f..84dd14f 100644 --- a/ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java +++ b/ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java @@ -88,6 +88,9 @@ public class ToolkitFuncs { public MethodHandle set_widget_groups2; public MethodHandle set_widget_visibility_states; + public MethodHandle set_group; + public MethodHandle unset_group; + public MethodHandle call_mainthread; public MethodHandle ui_malloc; @@ -201,6 +204,9 @@ public class ToolkitFuncs { MemorySegment ui_widget_set_groups2_addr = lib.find("ui_widget_set_groups2").orElseThrow(); MemorySegment ui_widget_set_visibility_states_addr = lib.find("ui_widget_set_visibility_states").orElseThrow(); + MemorySegment set_group_addr = lib.find("ui_set_group").orElseThrow(); + MemorySegment unset_group_addr = lib.find("ui_unset_group").orElseThrow(); + MemorySegment call_mainthread_addr = lib.find("ui_call_mainthread").orElseThrow(); MemorySegment ui_malloc_addr = lib.find("ui_malloc").orElseThrow(); @@ -293,6 +299,9 @@ public class ToolkitFuncs { set_widget_groups2 = linker.downcallHandle(ui_widget_set_groups2_addr, sigv_mmmmi); set_widget_visibility_states = linker.downcallHandle(ui_widget_set_visibility_states_addr, sigv_mmmi); + set_group = linker.downcallHandle(set_group_addr, sigv_mi); + unset_group = linker.downcallHandle(unset_group_addr, sigv_mi); + call_mainthread = linker.downcallHandle(call_mainthread_addr, sigv_mm); getappdir = linker.downcallHandle(getappdir_addr, sigm); -- 2.47.3