From 7faecb6fe43d5fc42e43aa7080952c186dcf3804 Mon Sep 17 00:00:00 2001 From: Mohammed Shekha Date: Thu, 18 Jan 2018 18:55:27 +0530 Subject: [PATCH] [FIX] web: WebClient: notify the ActionManager it's in the DOM Before this rev., on_attach_callback of the ActionManager wasn't called at init, because the WebClient didn't use the append function of dom_utils. --- .../web/static/src/js/chrome/abstract_web_client.js | 12 ++++++++++-- addons/web/static/src/js/chrome/web_client.js | 3 --- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/js/chrome/abstract_web_client.js b/addons/web/static/src/js/chrome/abstract_web_client.js index c491297abfc..58c068fecb1 100644 --- a/addons/web/static/src/js/chrome/abstract_web_client.js +++ b/addons/web/static/src/js/chrome/abstract_web_client.js @@ -18,6 +18,7 @@ var config = require('web.config'); var crash_manager = require('web.crash_manager'); var data_manager = require('web.data_manager'); var Dialog = require('web.Dialog'); +var dom = require('web.dom'); var Loading = require('web.Loading'); var mixins = require('web.mixins'); var NotificationManager = require('web.NotificationManager'); @@ -46,7 +47,7 @@ var AbstractWebClient = Widget.extend(mixins.ServiceProvider, { // notifications, warnings and effects notification: function (e) { - if(this.notification_manager) { + if (this.notification_manager) { this.notification_manager.notify(e.data.title, e.data.message, e.data.sticky); } }, @@ -201,8 +202,15 @@ var AbstractWebClient = Widget.extend(mixins.ServiceProvider, { }; }, set_action_manager: function () { + var self = this; this.action_manager = new ActionManager(this, session.user_context); - return this.action_manager.appendTo(this.$('.o_main_content')); + var fragment = document.createDocumentFragment(); + return this.action_manager.appendTo(fragment).then(function () { + dom.append(self.$('.o_main_content'), fragment, { + in_DOM: true, + callbacks: [{widget: self.action_manager}], + }); + }); }, set_notification_manager: function () { this.notification_manager = new NotificationManager(this); diff --git a/addons/web/static/src/js/chrome/web_client.js b/addons/web/static/src/js/chrome/web_client.js index c39917d5118..d824e3e4176 100644 --- a/addons/web/static/src/js/chrome/web_client.js +++ b/addons/web/static/src/js/chrome/web_client.js @@ -23,9 +23,6 @@ return AbstractWebClient.extend({ show_application: function() { var self = this; - // Allow to call `on_attach_callback` and `on_detach_callback` when needed - this.action_manager.is_in_DOM = true; - this.toggle_bars(true); this.set_title(); this.update_logo();