Philipp Hörist pushed to branch master at gajim / gajim


Commits:
a783fb10 by Nicoco at 2024-09-10T20:31:38+00:00
fix: Dataforms: Fix completion of single list forms

- - - - -


1 changed file:

- gajim/gtk/dataform.py


Changes:

=====================================
gajim/gtk/dataform.py
=====================================
@@ -397,7 +397,7 @@ def _set_warning(self,
         self._warning_image.set_tooltip_text(str(error))
         self._warning_image.set_visible(not is_valid)
 
-    def _validate(self) -> None:
+    def _validate(self, delay: bool = True) -> None:
         self._form_grid.validate(False)
         if self._validate_source_id is not None:
             GLib.source_remove(self._validate_source_id)
@@ -408,7 +408,10 @@ def _start_validation() -> None:
             self._form_grid.validate(is_valid)
             self._validate_source_id = None
 
-        self._validate_source_id = GLib.timeout_add(200, _start_validation)
+        if delay:
+            self._validate_source_id = GLib.timeout_add(200, _start_validation)
+        else:
+            _start_validation()
 
     def destroy(self) -> None:
         if self._validate_source_id is not None:
@@ -503,9 +506,14 @@ def _setup_dropdown(self, field: DataField) -> None:
         self._widget.set_active_id(field.value)
         self._widget.connect('changed', self._changed)
 
+    def _changed(self, widget: MaxWidthComboBoxText) -> None:
+        self._field.value = widget.get_active_id()
+        self._validate()
+
     def _setup_treeview(self, field: DataField) -> None:
         self._treeview = ListSingleTreeView(field, self)
         self._treeview.connect('row-activated', self._on_row_activated)
+        self._treeview.connect('cursor-changed', self._on_cursor_changed)
 
         self._widget = Gtk.ScrolledWindow()
         self._widget.set_propagate_natural_height(True)
@@ -516,11 +524,15 @@ def _setup_treeview(self, field: DataField) -> None:
         self._widget.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
         self._widget.add(self._treeview)
 
-    def _changed(self, widget: MaxWidthComboBoxText) -> None:
-        self._field.value = widget.get_active_id()
-        self._validate()
 
-    def _on_row_activated(self, *_args) -> None:
+    def _on_cursor_changed(self, *_args: Any) -> None:
+        model, treeiter = self._treeview.get_selection().get_selected()
+        if treeiter is None:
+            return None
+        self._field.value = model[treeiter][1]
+        self._validate(delay=False)
+
+    def _on_row_activated(self, *_args: Any) -> None:
         self.emit('row-activated')
 
     def add(self,
@@ -565,13 +577,6 @@ def __init__(self,
             self.set_tooltip_column(2)
 
         self.set_model(self._store)
-        self.connect('cursor-changed', self._on_cursor_changed)
-
-    def _on_cursor_changed(self, *_args) -> None:
-        model, treeiter = self.get_selection().get_selected()
-        if treeiter is None:
-            return None
-        self._field.value = model[treeiter][1]
 
 
 class ListMultiField(Field):



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/a783fb10194845088c89fd24147cbcba75a333c2

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/a783fb10194845088c89fd24147cbcba75a333c2
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- commits@gajim.org
To unsubscribe send an email to commits-le...@gajim.org

Reply via email to