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