diff --git a/sao/src/screen.js b/sao/src/screen.js index 4b31de4baf..580a9706bf 100644 --- a/sao/src/screen.js +++ b/sao/src/screen.js @@ -1603,7 +1603,7 @@ return this.current_record.id; } }, - new_: function(default_=true, defaults=null) { + new_: function(default_=true, defaults=null, display=true) { var previous_view = this.current_view; var prm = jQuery.when(); if (this.current_view && @@ -1636,10 +1636,14 @@ if (previous_view.view_type == 'calendar') { previous_view.set_default_date(record, selected_date); } - return this.display().then(() => { - this.set_cursor(true, true); + if (display) { + return this.display().then(() => { + this.set_cursor(true, true); + return record; + }); + } else { return record; - }); + } }); }); }, diff --git a/sao/src/wizard.js b/sao/src/wizard.js index 52c3ef66dd..754aa737bd 100644 --- a/sao/src/wizard.js +++ b/sao/src/wizard.js @@ -78,15 +78,18 @@ var view = result.view; this.update(view.fields_view, view.buttons); - prms.push(this.screen.new_(false).then(() => { - return this.screen.current_record.set_default( - view.defaults || {}) - .then(() => { - this.screen.current_record.set( - view.values || {}); - this.update_buttons(); - this.screen.set_cursor(); - }); + prms.push(this.screen.new_(false, null, false) + .then(() => { + return this.screen.current_record.set_default( + view.defaults || {}) + .then(() => { + this.screen.current_record.set( + view.values || {}); + this.update_buttons(); + return this.screen.display().then(() => { + this.screen.set_cursor(); + }); + }); })); this.screen_state = view.state; diff --git a/tryton/tryton/gui/window/view_form/screen/screen.py b/tryton/tryton/gui/window/view_form/screen/screen.py index 3cd85489e9..2b23a5af37 100644 --- a/tryton/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/tryton/gui/window/view_form/screen/screen.py @@ -681,7 +681,7 @@ class Screen: return view - def new(self, default=True, defaults=None): + def new(self, default=True, defaults=None, display=True): previous_view = self.current_view if self.current_view and self.current_view.view_type == 'calendar': selected_date = self.current_view.get_selected_date() @@ -698,9 +698,10 @@ class Screen: if previous_view.view_type == 'calendar': previous_view.set_default_date(record, selected_date) self.current_record = record - self.display() - # Postpone set of the cursor to ensure widgets are allocated - GLib.idle_add(self.set_cursor, True) + if display: + self.display() + # Postpone set of the cursor to ensure widgets are allocated + GLib.idle_add(self.set_cursor, True) return self.current_record @property diff --git a/tryton/tryton/gui/window/wizard.py b/tryton/tryton/gui/window/wizard.py index 1a80444119..5104e22388 100644 --- a/tryton/tryton/gui/window/wizard.py +++ b/tryton/tryton/gui/window/wizard.py @@ -109,12 +109,13 @@ class Wizard(InfoBar): view = result['view'] self.update(view['fields_view'], view['buttons']) - self.screen.new(default=False) + self.screen.new(default=False, display=False) if 'defaults' in view: self.screen.current_record.set_default(view['defaults']) if 'values' in view: self.screen.current_record.set(view['values']) self.update_buttons() + self.screen.display() self.screen.set_cursor() self.screen_state = view['state']