diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py index c57e7e214b..1d7d1f9321 100644 --- a/tryton/gui/window/view_form/model/field.py +++ b/tryton/gui/window/view_form/model/field.py @@ -687,8 +687,10 @@ class O2MField(Field): record.value[self.name].add_fields(fields, signal=False) for index, vals in value.get('add', []): new_record = record.value[self.name].new(default=False) - record.value[self.name].add(new_record, index) + record.value[self.name].add(new_record, index, signal=False) new_record.set_on_change(vals) + if value.get('add'): + record.value[self.name].signal('group-changed', new_record) for vals in value.get('update', []): if 'id' not in vals: diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py index 734e16faf1..7f581efd9a 100644 --- a/tryton/gui/window/view_form/model/group.py +++ b/tryton/gui/window/view_form/model/group.py @@ -261,7 +261,7 @@ class Group(SignalEvent, list): context = property(_get_context) - def add(self, record, position=-1): + def add(self, record, position=-1, signal=True): if record.group is not self: record.signal_unconnect(record.group) record.group = self @@ -281,7 +281,8 @@ class Group(SignalEvent, list): self.current_idx = position record.modified_fields.setdefault('id') record.signal('record-modified') - self.signal('group-changed', record) + if signal: + self.signal('group-changed', record) # Set parent field to trigger on_change if self.parent and self.parent_name in self.fields: field = self.fields[self.parent_name]