]> uap-core.de Git - rssreader.git/commitdiff
increase window size
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 13 Sep 2025 17:32:21 +0000 (19:32 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 13 Sep 2025 17:32:21 +0000 (19:32 +0200)
rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt
ui-java/src/main/java/de/unixwork/ui/UiObject.java
ui-java/src/main/java/de/unixwork/ui/UiObjectFuncs.java
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt

index d850051eea6bc7f995b0f235e2b01331e6a8dfe8..2f500f24599c9588817301efbf580df1a2fa3ed6 100644 (file)
@@ -28,7 +28,7 @@ class MainWindow() {
     var currentFeedIndex = -1
 
     init {
-        window = sidebarWindow("RSS Reader") {
+        window = sidebarWindow(title = "RSS Reader", width = 1600, height = 1000) {
             sidebar {
                 vbox(fill = true) {
                     sourcelist(
@@ -73,7 +73,7 @@ class MainWindow() {
                 }
             }
 
-            hsplitpane(fill = true, initialPosition = 300) {
+            hsplitpane(fill = true, initialPosition = 600) {
                 vbox(fill = true) {
                     val model = TableModel()
                     model.addColumn("Title", ColumnType.STRING, -1)
index f8cdeb837ab23868114892629682e2bf39e38c8a..db031e69f03429e389c1d002588553ca5db87604 100644 (file)
@@ -31,6 +31,15 @@ public class UiObject extends Context {
         }
     }
 
+    public void setSize(int width, int height) {
+        UiObjectFuncs tk = UiObjectFuncs.instance;
+        try {
+            tk.ui_window_size.invoke(ptr, width, height);
+        } catch (Throwable e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     public void addCloseHandler(ObjectDestroyHandler handler) {
         closeHandlers.add(handler);
     }
index c5190fb5bc4db0abbfeb75fb1bbc8c4b4cb31ab1..8febc50e7414b22f3fb1a0d8be9dd468a44816cb 100644 (file)
@@ -16,6 +16,8 @@ class UiObjectFuncs {
     public MethodHandle ui_openfiledialog;
     public MethodHandle ui_savefiledialog;
 
+    public MethodHandle ui_window_size;
+
 
     private UiObjectFuncs(Linker linker, SymbolLookup lib) {
         // void* func(void*, void*)
@@ -26,6 +28,7 @@ class UiObjectFuncs {
         FunctionDescriptor sigv_mm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.ADDRESS);
         FunctionDescriptor sigv_mimm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
         FunctionDescriptor sigv_mmmm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
+        FunctionDescriptor sigv_mii = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.JAVA_INT);
 
         MemorySegment ui_show_addr = lib.find("ui_show").orElseThrow();
         MemorySegment ui_close_addr = lib.find("ui_close").orElseThrow();
@@ -37,6 +40,8 @@ class UiObjectFuncs {
         MemorySegment ui_openfiledialog_addr = lib.find("ui_openfiledialog").orElseThrow();
         MemorySegment ui_savefiledialog_addr = lib.find("ui_savefiledialog").orElseThrow();
 
+        MemorySegment ui_window_size_addr = lib.find("ui_window_size").orElseThrow();
+
         ui_show = linker.downcallHandle(ui_show_addr, sigv_m);
         ui_close = linker.downcallHandle(ui_close_addr, sigv_m);
         ui_window = linker.downcallHandle(ui_window_addr, sigm_mm);
@@ -46,6 +51,8 @@ class UiObjectFuncs {
         ui_dialog_create = linker.downcallHandle(ui_dialog_create_addr, sigv_mm);
         ui_openfiledialog = linker.downcallHandle(ui_openfiledialog_addr, sigv_mimm);
         ui_savefiledialog = linker.downcallHandle(ui_savefiledialog_addr, sigv_mmmm);
+
+        ui_window_size = linker.downcallHandle(ui_window_size_addr, sigv_mii);
     }
 
     // must be called by the Toolkit constructor
index c99ca610e6ce5a96b6b5467da6fe22d9741deae8..35c2d1904424ac36c01f095a3fb62bf08071805e 100644 (file)
@@ -5,22 +5,31 @@ import de.unixwork.ui.DialogWindowBuilder
 import de.unixwork.ui.EventHandler
 import de.unixwork.ui.UiObject
 
-fun window(title: String, ui: (Toplevel.() -> Unit)? = null): Toplevel {
+fun window(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel {
     val obj = UiObject.createWindow(title)
+    if(width > 0 && height > 0) {
+        obj.setSize(width, height)
+    }
     val toplevel = Toplevel(obj)
     ui?.invoke(toplevel)
     return toplevel
 }
 
-fun simpleWindow(title: String, ui: (Toplevel.() -> Unit)? = null): Toplevel {
+fun simpleWindow(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel {
     val obj = UiObject.createSimpleWindow(title)
+    if(width > 0 && height > 0) {
+        obj.setSize(width, height)
+    }
     val toplevel = Toplevel(obj)
     ui?.invoke(toplevel)
     return toplevel
 }
 
-fun sidebarWindow(title: String, ui: (Toplevel.() -> Unit)? = null): Toplevel {
+fun sidebarWindow(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel {
     val obj = UiObject.createSidebarWindow(title)
+    if(width > 0 && height > 0) {
+        obj.setSize(width, height)
+    }
     val toplevel = Toplevel(obj)
     ui?.invoke(toplevel)
     return toplevel