]> uap-core.de Git - rssreader.git/commitdiff
add support for sourcelist header items and button popup menus
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 17 Oct 2025 18:28:31 +0000 (20:28 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 17 Oct 2025 18:28:31 +0000 (20:28 +0200)
ui-java/src/main/java/de/unixwork/ui/ArgFuncs.java
ui-java/src/main/java/de/unixwork/ui/SubListItem.java
ui-java/src/main/java/de/unixwork/ui/Toolkit.java
ui-java/src/main/java/de/unixwork/ui/ToolkitFuncs.java

index f7f3b101af00ee6a04c0f0af08cbfc08e0143040..da34e13c317ea1e60c1e812e8274e66d0c77431c 100644 (file)
@@ -415,6 +415,7 @@ class ArgFuncs {
     MethodHandle sourcelist_args_set_onbuttonclick;
     MethodHandle sourcelist_args_set_onbuttonclickdata;
     MethodHandle sourcelist_args_set_contextmenu;
+    MethodHandle sourcelist_args_set_header_is_item;
     MethodHandle sourcelist_args_free;
 
     MethodHandle textarea_args_new;
@@ -935,6 +936,7 @@ class ArgFuncs {
         MemorySegment ui_sourcelist_args_set_onbuttonclick_addr = lib.find("ui_sourcelist_args_set_onbuttonclick").orElseThrow();
         MemorySegment ui_sourcelist_args_set_onbuttonclickdata_addr = lib.find("ui_sourcelist_args_set_onbuttonclickdata").orElseThrow();
         MemorySegment ui_sourcelist_args_set_contextmenu_addr = lib.find("ui_sourcelist_args_set_contextmenu").orElseThrow();
+        MemorySegment ui_sourcelist_args_set_header_is_item_addr = lib.find("ui_sourcelist_args_set_header_is_item").orElseThrow();
         MemorySegment ui_sourcelist_args_free_addr = lib.find("ui_sourcelist_args_free").orElseThrow();
 
         MemorySegment ui_textarea_args_new_addr = lib.find("ui_textarea_args_new").orElseThrow();
@@ -1444,6 +1446,7 @@ class ArgFuncs {
         sourcelist_args_set_onbuttonclick = linker.downcallHandle(ui_sourcelist_args_set_onbuttonclick_addr, sigv_mm);
         sourcelist_args_set_onbuttonclickdata = linker.downcallHandle(ui_sourcelist_args_set_onbuttonclickdata_addr, sigv_mm);
         sourcelist_args_set_contextmenu = linker.downcallHandle(ui_sourcelist_args_set_contextmenu_addr, sigv_mm);
+        sourcelist_args_set_header_is_item = linker.downcallHandle(ui_sourcelist_args_set_header_is_item_addr, sigv_mb);
         sourcelist_args_free = linker.downcallHandle(ui_sourcelist_args_free_addr, sigv_m);
 
         textarea_args_new = linker.downcallHandle(ui_textarea_args_new_addr, sigm);
index 51644447ddf791ff0fc04f190106439b071c6d89..299a452d52bef98f7a3bdfbfe9768a5bc1d3a9e3 100644 (file)
@@ -5,6 +5,7 @@ public class SubListItem {
     public String label;
     public String buttonIcon;
     public String buttonLabel;
+    public Menu buttonMenu;
     public String badge;
 
     public SubListItem() {
index bd2e9f8716d27ff6d0cafafba787dc027d511f65..d9c5aadce313f68866ac9e308c3154e33fc17f8f 100644 (file)
@@ -597,6 +597,9 @@ public class Toolkit {
                 MemorySegment cstr = arena.allocateFrom(item.buttonLabel);
                 ui.sublist_item_set_button_label.invoke(out_item, cstr);
             }
+            if(item.buttonMenu != null) {
+                ui.sublist_item_set_button_menu.invoke(out_item, item.buttonMenu.createMenuBuilder());
+            }
             if(item.badge != null) {
                 MemorySegment cstr = arena.allocateFrom(item.badge);
                 ui.sublist_item_set_badge.invoke(out_item, cstr);
index 5e21bc035e33bda9a2b152d616c1d1a896d3524c..8b557b5e750558df7817ede55bbd4220c97bead1 100644 (file)
@@ -35,6 +35,7 @@ public class ToolkitFuncs {
     public MethodHandle sublist_item_set_label;
     public MethodHandle sublist_item_set_button_icon;
     public MethodHandle sublist_item_set_button_label;
+    public MethodHandle sublist_item_set_button_menu;
     public MethodHandle sublist_item_set_badge;
     public MethodHandle sublist_item_set_eventdata;
 
@@ -160,6 +161,7 @@ public class ToolkitFuncs {
         MemorySegment sublist_item_set_label_addr = lib.find("ui_sublist_item_set_label").orElseThrow();
         MemorySegment sublist_item_set_button_icon_addr = lib.find("ui_sublist_item_set_button_icon").orElseThrow();
         MemorySegment sublist_item_set_button_label_addr = lib.find("ui_sublist_item_set_button_label").orElseThrow();
+        MemorySegment sublist_item_set_button_menu_addr = lib.find("ui_sublist_item_set_button_menu").orElseThrow();
         MemorySegment sublist_item_set_badge_addr = lib.find("ui_sublist_item_set_badge").orElseThrow();
         MemorySegment sublist_item_set_eventdata_addr = lib.find("ui_sublist_item_set_eventdata").orElseThrow();
 
@@ -260,6 +262,7 @@ public class ToolkitFuncs {
         sublist_item_set_label = linker.downcallHandle(sublist_item_set_label_addr, sigv_mm);
         sublist_item_set_button_icon = linker.downcallHandle(sublist_item_set_button_icon_addr, sigv_mm);
         sublist_item_set_button_label = linker.downcallHandle(sublist_item_set_button_label_addr, sigv_mm);
+        sublist_item_set_button_menu = linker.downcallHandle(sublist_item_set_button_menu_addr, sigv_mm);
         sublist_item_set_badge = linker.downcallHandle(sublist_item_set_badge_addr, sigv_mm);
         sublist_item_set_eventdata = linker.downcallHandle(sublist_item_set_eventdata_addr, sigv_mm);