]> uap-core.de Git - note.git/commitdiff
add additional methods for setting/getting UiList selections main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Thu, 23 Apr 2026 18:30:26 +0000 (20:30 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Thu, 23 Apr 2026 18:30:26 +0000 (20:30 +0200)
ui-rs/src/ui/button.rs
ui-rs/src/ui/list.rs
ui-rs/src/ui/text.rs
ui-rs/src/ui/toolkit.rs

index 846aa4056b0cf1c11773725e095e68a5367029c6..37412582f2c734ed7d3adb37333ab1d940e00d7f 100644 (file)
@@ -121,42 +121,42 @@ impl<'a, T> ButtonBuilder<'a, T> {
 
     pub fn fill(&mut self, fill: bool) -> &mut Self {
         unsafe {
-            ui_button_args_set_fill(self.args, if fill { 1 } else { 0 });
+            ui_button_args_set_fill(self.args, fill as c_int);
         }
         self
     }
 
     pub fn hexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_button_args_set_hexpand(self.args, if value { 1 } else { 0 });
+            ui_button_args_set_hexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn vexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_button_args_set_vexpand(self.args, if value { 1 } else { 0 });
+            ui_button_args_set_vexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn hfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_button_args_set_hfill(self.args, if value { 1 } else { 0 });
+            ui_button_args_set_hfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn vfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_button_args_set_vfill(self.args, if value { 1 } else { 0 });
+            ui_button_args_set_vfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn override_defaults(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_button_args_set_override_defaults(self.args, if value { 1 } else { 0 });
+            ui_button_args_set_override_defaults(self.args, value as c_int);
         }
         self
     }
@@ -306,35 +306,35 @@ impl<'a, T> ToggleBuilder<'a, T> {
 
     pub fn hexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_toggle_args_set_hexpand(self.args, if value { 1 } else { 0 });
+            ui_toggle_args_set_hexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn vexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_toggle_args_set_vexpand(self.args, if value { 1 } else { 0 });
+            ui_toggle_args_set_vexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn hfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_toggle_args_set_hfill(self.args, if value { 1 } else { 0 });
+            ui_toggle_args_set_hfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn vfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_toggle_args_set_vfill(self.args, if value { 1 } else { 0 });
+            ui_toggle_args_set_vfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn override_defaults(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_toggle_args_set_override_defaults(self.args, if value { 1 } else { 0 });
+            ui_toggle_args_set_override_defaults(self.args, value as c_int);
         }
         self
     }
index a1fca13e78482ba9ff74328e10eab2fbe7e484df..cc1648eaa4a425810f27a10c225badd95be66fba 100644 (file)
@@ -142,42 +142,42 @@ impl<'a, T, E> ListViewBuilder<'a, T, E> {
 
     pub fn fill(&mut self, fill: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_fill(self.args, if fill { 1 } else { 0 });
+            ui_list_args_set_fill(self.args, fill as c_int);
         }
         self
     }
 
     pub fn hexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_hexpand(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_hexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn vexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_vexpand(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_vexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn hfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_hfill(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_hfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn vfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_vfill(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_vfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn override_defaults(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_override_defaults(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_override_defaults(self.args, value as c_int);
         }
         self
     }
@@ -327,35 +327,35 @@ impl<'a, T, E> TableViewBuilder<'a, T, E> {
 
     pub fn hexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_hexpand(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_hexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn vexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_vexpand(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_vexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn hfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_hfill(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_hfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn vfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_vfill(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_vfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn override_defaults(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_list_args_set_override_defaults(self.args, if value { 1 } else { 0 });
+            ui_list_args_set_override_defaults(self.args, value as c_int);
         }
         self
     }
@@ -497,35 +497,35 @@ impl<'a, T, E> SourceListBuilder<'a, T, E> {
 
     pub fn hexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_sourcelist_args_set_hexpand(self.args, if value { 1 } else { 0 });
+            ui_sourcelist_args_set_hexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn vexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_sourcelist_args_set_vexpand(self.args, if value { 1 } else { 0 });
+            ui_sourcelist_args_set_vexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn hfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_sourcelist_args_set_hfill(self.args, if value { 1 } else { 0 });
+            ui_sourcelist_args_set_hfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn vfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_sourcelist_args_set_vfill(self.args, if value { 1 } else { 0 });
+            ui_sourcelist_args_set_vfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn override_defaults(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_sourcelist_args_set_override_defaults(self.args, if value { 1 } else { 0 });
+            ui_sourcelist_args_set_override_defaults(self.args, value as c_int);
         }
         self
     }
@@ -621,7 +621,7 @@ impl<'a, T, E> SourceListBuilder<'a, T, E> {
 
     pub fn header_is_item(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_sourcelist_args_set_header_is_item(self.args, if value { 1 } else { 0 });
+            ui_sourcelist_args_set_header_is_item(self.args, value as c_int);
         }
         self
     }
index 2b30ef277f911ba7e8da7eef055b295b939d82f8..c7122143eb3c6aba25e4e21f0b9696b8a9343b69 100644 (file)
@@ -42,42 +42,42 @@ impl<'a, T> TextAreaBuilder<'a, T> {
 
     pub fn fill(&mut self, fill: bool) -> &mut Self {
         unsafe {
-            ui_textarea_args_set_fill(self.args, if fill { 1 } else { 0 });
+            ui_textarea_args_set_fill(self.args, fill as c_int);
         }
         self
     }
 
     pub fn hexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textarea_args_set_hexpand(self.args, if value { 1 } else { 0 });
+            ui_textarea_args_set_hexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn vexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textarea_args_set_vexpand(self.args, if value { 1 } else { 0 });
+            ui_textarea_args_set_vexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn hfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textarea_args_set_hfill(self.args, if value { 1 } else { 0 });
+            ui_textarea_args_set_hfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn vfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textarea_args_set_vfill(self.args, if value { 1 } else { 0 });
+            ui_textarea_args_set_vfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn override_defaults(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textarea_args_set_override_defaults(self.args, if value { 1 } else { 0 });
+            ui_textarea_args_set_override_defaults(self.args, value as c_int);
         }
         self
     }
@@ -267,35 +267,35 @@ impl<'a, T> TextFieldBuilder<'a, T> {
 
     pub fn hexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textfield_args_set_hexpand(self.args, if value { 1 } else { 0 });
+            ui_textfield_args_set_hexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn vexpand(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textfield_args_set_vexpand(self.args, if value { 1 } else { 0 });
+            ui_textfield_args_set_vexpand(self.args, value as c_int);
         }
         self
     }
 
     pub fn hfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textfield_args_set_hfill(self.args, if value { 1 } else { 0 });
+            ui_textfield_args_set_hfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn vfill(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textfield_args_set_vfill(self.args, if value { 1 } else { 0 });
+            ui_textfield_args_set_vfill(self.args, value as c_int);
         }
         self
     }
 
     pub fn override_defaults(&mut self, value: bool) -> &mut Self {
         unsafe {
-            ui_textfield_args_set_override_defaults(self.args, if value { 1 } else { 0 });
+            ui_textfield_args_set_override_defaults(self.args, value as c_int);
         }
         self
     }
index 0b0ce16e9df2bf3a4765fbf5005512a144c29876..db1a072f5abb9cb90964cf984eabbe9b46c9dc62 100644 (file)
@@ -375,6 +375,18 @@ impl<T> UiList<T> {
             ui_list_set_selected_indices(self.ptr, sel.as_ptr(), sel.len() as c_int);
         }
     }
+
+    pub fn set_selected_index(&mut self, index: i32) {
+        unsafe {
+            ui_list_setselection(self.ptr, index);
+        }
+    }
+
+    pub fn select_with_event(&mut self, index: i32, trigger_event: bool) {
+        unsafe {
+            ui_list_setselection2(self.ptr, index, trigger_event as i32);
+        }
+    }
 }
 
 impl<T> Drop for UiList<T> {
@@ -597,4 +609,8 @@ extern "C" {
     pub fn ui_list_clear(list: *mut ffi::UiList);
 
     fn ui_list_free(ctx: *mut ffi::UiContext, list: *mut ffi::UiList);
+
+    fn ui_list_getselection(list: *const ffi::UiList) -> c_int;
+    fn ui_list_setselection(list: *mut ffi::UiList, selection: c_int);
+    fn ui_list_setselection2(list: *mut ffi::UiList, selection: c_int, event: c_int);
 }