diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index bdc1eeb3da1..e11c0c20f04 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -246,12 +246,16 @@ session.web.ViewManager = session.web.Widget.extend(/** @lends session.web.View */ on_mode_switch: function(view_type, no_store) { var self = this, + view = this.views[view_type], view_promise; + if(!view) + return $.Deferred().reject(); + if (!no_store) { this.views_history.push(view_type); } this.active_view = view_type; - var view = this.views[view_type]; + if (!view.controller) { // Lazy loading of views var controllerclass = this.registry.get_object(view_type); @@ -494,32 +498,31 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner }, on_mode_switch: function (view_type, no_store) { var self = this; - var switched = $.when(this._super(view_type, no_store)).then(function () { + + return $.when(this._super(view_type, no_store)).then(function () { + self.shortcut_check(self.views[view_type]); + self.$element.find('.oe-view-manager-logs:first') .addClass('oe-folded').removeClass('oe-has-more') .find('ul').empty(); - }); - return $.when( - switched, - this.shortcut_check(this.views[view_type]) - ).then(function() { - var controller = self.views[self.active_view].controller, - fvg = controller.fields_view, - view_id = (fvg && fvg.view_id) || '--'; - self.$element.find('.oe_get_xml_view span').text(view_id); - if (!self.action.name && fvg) { - self.$element.find('.oe_view_title_text').text(fvg.arch.attrs.string || fvg.name); - } - var $title = self.$element.find('.oe_view_title_text'), - $search_prefix = $title.find('span.oe_searchable_view'); - if (controller.searchable !== false) { - if (!$search_prefix.length) { - $title.prepend('' + _t("Search: ") + ''); - } - } else { - $search_prefix.remove(); + var controller = self.views[self.active_view].controller, + fvg = controller.fields_view, + view_id = (fvg && fvg.view_id) || '--'; + self.$element.find('.oe_get_xml_view span').text(view_id); + if (!self.action.name && fvg) { + self.$element.find('.oe_view_title_text').text(fvg.arch.attrs.string || fvg.name); + } + + var $title = self.$element.find('.oe_view_title_text'), + $search_prefix = $title.find('span.oe_searchable_view'); + if (controller.searchable !== false) { + if (!$search_prefix.length) { + $title.prepend('' + _t("Search: ") + ''); } + } else { + $search_prefix.remove(); + } }); }, shortcut_check : function(view) {