]> uap-core.de Git - rssreader.git/commitdiff
add bindings for remaining event wrapper functions
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 13 Jun 2025 17:15:25 +0000 (19:15 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 13 Jun 2025 17:15:25 +0000 (19:15 +0200)
ui-java/src/main/java/de/unixwork/ui/Event.java
ui-java/src/main/java/de/unixwork/ui/EventWrapper.java
ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java
ui-java/src/main/java/de/unixwork/ui/UiObject.java

index 68464236a3fff876c737ad7f4fada63ac566a039..00d0732a9409c086791262beff6c7bd9bed19033 100644 (file)
@@ -5,9 +5,13 @@ import java.lang.foreign.MemorySegment;
 public class Event {
     private UiObject object;
     private Object documemt;
-    private Object window;
+    private Object windowData;
     private Object eventdata;
     private int intval;
+    private int set;
+
+    private MemorySegment windowPtr;
+    private MemorySegment documentPtr;
 
     public Event() {
 
@@ -20,6 +24,14 @@ public class Event {
         try {
             long objAddress = ((MemorySegment) ui.event_get_obj.invoke(eventPtr)).address();
             object = toolkit.getToplevelObject(objAddress);
+            if (object != null) {
+                windowData = object.getWindowData();
+            }
+
+            windowPtr = (MemorySegment) ui.event_get_windowdata.invoke(eventPtr);
+            documentPtr = (MemorySegment) ui.event_get_document.invoke(eventPtr);
+            intval = (int)ui.event_get_int.invoke(eventPtr);
+            set = (int)ui.event_get_set.invoke(eventPtr);
         } catch (Throwable e) {
             throw new RuntimeException(e);
         }
@@ -33,15 +45,25 @@ public class Event {
         return documemt;
     }
 
-    public Object getWindow() {
-        return window;
+    public Object getWindowData() {
+        return windowData;
     }
 
     public Object getEventdata() {
         return eventdata;
     }
 
-    public int getIntval() {
+    public int getIntValue() {
         return intval;
     }
+
+    public int getSet() { return set; }
+
+    public MemorySegment getWindowPtr() {
+        return windowPtr;
+    }
+
+    public MemorySegment getDocumentPtr() {
+        return documentPtr;
+    }
 }
index 3d0bfc0eb5f4adf9b592ffc090f33bf98464fb17..a2d34b8c86740866a738b0e3df53514c641b0906 100644 (file)
@@ -53,7 +53,6 @@ public class EventWrapper {
     }
 
     public static void eventHandler(MemorySegment event, MemorySegment userdata) {
-        System.out.println("event handler");
         int eventHandlerIndex = (int)userdata.address();
 
         Event e = new Event(event);
index 13935b930f04fd61e172f0e221bf7916cd399d1b..160bfcfda1503ca60318e509ef3972ec374b0983 100644 (file)
@@ -7,6 +7,11 @@ public class ToolkitFuncs {
     static ToolkitFuncs instance;
 
     public MethodHandle event_get_obj;
+    public MethodHandle event_get_document;
+    public MethodHandle event_get_windowdata;
+    public MethodHandle event_get_eventdata;
+    public MethodHandle event_get_int;
+    public MethodHandle event_get_set;
 
     private ToolkitFuncs(Linker linker, SymbolLookup lib) {
         // void* func(void*)
@@ -14,8 +19,18 @@ public class ToolkitFuncs {
         FunctionDescriptor sigi_m = FunctionDescriptor.of(ValueLayout.JAVA_INT, ValueLayout.ADDRESS);
 
         MemorySegment event_get_obj_addr = lib.find("ui_event_get_obj").orElseThrow();
+        MemorySegment event_get_document_addr = lib.find("ui_event_get_document").orElseThrow();
+        MemorySegment event_get_windowdata_addr = lib.find("ui_event_get_windowdata").orElseThrow();
+        MemorySegment event_get_eventdata_addr = lib.find("ui_event_get_eventdata").orElseThrow();
+        MemorySegment event_get_int_addr = lib.find("ui_event_get_int").orElseThrow();
+        MemorySegment event_get_set_addr = lib.find("ui_event_get_set").orElseThrow();
 
         event_get_obj = linker.downcallHandle(event_get_obj_addr, sigm_m);
+        event_get_document = linker.downcallHandle(event_get_document_addr, sigm_m);
+        event_get_windowdata = linker.downcallHandle(event_get_windowdata_addr, sigm_m);
+        event_get_eventdata = linker.downcallHandle(event_get_eventdata_addr, sigm_m);
+        event_get_int = linker.downcallHandle(event_get_int_addr, sigi_m);
+        event_get_set = linker.downcallHandle(event_get_set_addr, sigi_m);
     }
 
     static ToolkitFuncs getInstance() {
index 6938f5cc928124abe66b54c24d4a69c5a4b5b2fd..503ab465d0717155fb6754a2507f85d0ec6e164e 100644 (file)
@@ -14,6 +14,8 @@ public class UiObject {
 
     private Arena arena;
 
+    private Object windowData;
+
     public UiObject(MemorySegment ptr) {
         this.ptr = ptr;
         // TODO: maybe the C toolkit code should also handle toplevel object creation and call a callback
@@ -45,4 +47,12 @@ public class UiObject {
         }
         return arena;
     }
+
+    public void setWindowData(Object windowData) {
+        this.windowData = windowData;
+    }
+
+    public Object getWindowData() {
+        return windowData;
+    }
 }