summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/chrome/action_manager.js4
-rw-r--r--addons/web/static/src/js/core/dialog.js6
-rw-r--r--addons/web/static/src/js/views/form/form_controller.js21
3 files changed, 7 insertions, 24 deletions
diff --git a/addons/web/static/src/js/chrome/action_manager.js b/addons/web/static/src/js/chrome/action_manager.js
index 014aa918e54..3d2dc7a4076 100644
--- a/addons/web/static/src/js/chrome/action_manager.js
+++ b/addons/web/static/src/js/chrome/action_manager.js
@@ -12,7 +12,6 @@ odoo.define('web.ActionManager', function (require) {
var AbstractAction = require('web.AbstractAction');
var concurrency = require('web.concurrency');
var Context = require('web.Context');
-var config = require('web.config');
var core = require('web.core');
var Dialog = require('web.Dialog');
var dom = require('web.dom');
@@ -717,6 +716,9 @@ var ActionManager = Widget.extend({
controller: controller,
});
+ // close all dialogs when the current controller changes
+ core.bus.trigger('close_dialogs');
+
// toggle the fullscreen mode for actions in target='fullscreen'
this._toggleFullscreen();
},
diff --git a/addons/web/static/src/js/core/dialog.js b/addons/web/static/src/js/core/dialog.js
index 8f128b657d9..e3101e52bde 100644
--- a/addons/web/static/src/js/core/dialog.js
+++ b/addons/web/static/src/js/core/dialog.js
@@ -22,8 +22,8 @@ var Dialog = Widget.extend({
custom_events: _.extend({}, Widget.prototype.custom_events, {
focus_control_button: '_onFocusControlButton',
}),
- events: _.extend({} , Widget.prototype.events, {
- 'keydown .modal-footer button':'_onFooterButtonKeyDown',
+ events: _.extend({}, Widget.prototype.events, {
+ 'keydown .modal-footer button': '_onFooterButtonKeyDown',
}),
/**
* @param {Widget} parent
@@ -92,6 +92,8 @@ var Dialog = Widget.extend({
this.backdrop = options.backdrop;
this.renderHeader = options.renderHeader;
this.renderFooter = options.renderFooter;
+
+ core.bus.on('close_dialogs', this, this.destroy.bind(this));
},
/**
* Wait for XML dependencies and instantiate the modal structure (except
diff --git a/addons/web/static/src/js/views/form/form_controller.js b/addons/web/static/src/js/views/form/form_controller.js
index 827afbb99ed..89477f9c974 100644
--- a/addons/web/static/src/js/views/form/form_controller.js
+++ b/addons/web/static/src/js/views/form/form_controller.js
@@ -14,7 +14,6 @@ var FormController = BasicController.extend({
custom_events: _.extend({}, BasicController.prototype.custom_events, {
bounce_edit: '_onBounceEdit',
button_clicked: '_onButtonClicked',
- do_action: '_onDoAction',
edited_list: '_onEditedList',
open_one2many_record: '_onOpenOne2ManyRecord',
open_record: '_onOpenRecord',
@@ -544,26 +543,6 @@ var FormController = BasicController.extend({
this._discardChanges();
},
/**
- * Destroy subdialog widgets after an action is finished.
- *
- * @param {OdooEvent} ev
- * @private
- */
- _onDoAction: function (ev) {
- var self = this;
- // A priori, different widgets could write on the "on_success" key.
- // Below we ensure that all the actions required by those widgets
- // are executed in a suitable order before every cycle of destruction.
- var callback = ev.data.on_success || function () {};
- ev.data.on_success = function () {
- callback();
- function isDialog (widget) {
- return (widget instanceof Dialog);
- }
- _.invoke(self.getChildren().filter(isDialog), 'destroy');
- };
- },
- /**
* Called when the user clicks on 'Duplicate Record' in the sidebar
*
* @private