From f496ca79d6ddffa778e0bba7945c6c4f897b6bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 24 Sep 2024 14:55:14 +0200 Subject: [PATCH] Disable remove button of Many2Many if all selected records are already removed --- sao/src/view/form.js | 9 ++++++++- .../gui/window/view_form/view/form_gtk/many2many.py | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/sao/src/view/form.js b/sao/src/view/form.js index 69c7599020..6fb6c39abc 100644 --- a/sao/src/view/form.js +++ b/sao/src/view/form.js @@ -4083,10 +4083,17 @@ function eval_pyson(value){ (m2m_size >= field_size) && (field_size >= 0)); } + var removable = + this.screen.selected_records.some((r) => !r.deleted && !r.removed); + this.entry.prop('disabled', this._readonly || !record); this.but_add.prop('disabled', this._readonly || !record || size_limit); this.but_remove.prop( - 'disabled', this._readonly || !record || this._position === 0); + 'disabled', + this._readonly || + !record || + !removable || + this._position === 0); }, record_message: function(position, size) { this._position = position; diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/many2many.py b/tryton/tryton/gui/window/view_form/view/form_gtk/many2many.py index e577e87bd5..fc99624807 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/many2many.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/many2many.py @@ -284,11 +284,16 @@ class Many2Many(Widget): else: size_limit = False + removable = any( + not r.deleted and not r.removed + for r in self.screen.selected_records) + self.but_add.set_sensitive(bool( not self._readonly and not size_limit)) self.but_remove.set_sensitive(bool( not self._readonly + and removable and self._position)) def record_message(self, position, size, *args):