diff options
| author | Julien Legros <jle@odoo.com> | 2016-01-19 11:37:27 +0100 |
|---|---|---|
| committer | Julien Legros <jle@odoo.com> | 2016-01-19 11:37:27 +0100 |
| commit | ddcc62c6dd0a73a04c9f5f2078ecd338c0e146bb (patch) | |
| tree | ff0837e802390cc9333fe306466a2e1f8b431641 /addons/web/static/src | |
| parent | 85b3e96396b411a0b66863ddf6af854e22071e6f (diff) | |
| parent | 365e298fb1907085d4071285c2be5dbcd5c59a0e (diff) | |
[MERGE] forward port of branch 9.0 up to 365e298
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/action_manager.js | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/framework/utils.js | 10 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_manager.js | 23 |
3 files changed, 28 insertions, 9 deletions
diff --git a/addons/web/static/src/js/action_manager.js b/addons/web/static/src/js/action_manager.js index 9f435bf2c6b..2337583b7f9 100644 --- a/addons/web/static/src/js/action_manager.js +++ b/addons/web/static/src/js/action_manager.js @@ -228,9 +228,9 @@ var ActionManager = Widget.extend({ this.main_control_panel = new ControlPanel(this); // Listen to event "on_breadcrumb_click" trigerred on the control panel when // clicking on a part of the breadcrumbs. Call select_action for this breadcrumb. - this.main_control_panel.on("on_breadcrumb_click", this, function(action, index) { + this.main_control_panel.on("on_breadcrumb_click", this, _.debounce(function(action, index) { this.select_action(action, index); - }); + }, 200, true)); // Append the main control panel to the DOM (inside the ActionManager jQuery element) this.main_control_panel.appendTo(this.$el); diff --git a/addons/web/static/src/js/framework/utils.js b/addons/web/static/src/js/framework/utils.js index 38953138da9..a0ab37a7dfb 100644 --- a/addons/web/static/src/js/framework/utils.js +++ b/addons/web/static/src/js/framework/utils.js @@ -475,10 +475,16 @@ function autoresize ($textarea, options) { top: -10000, left: -10000, }); - $fixed_text_area.addClass($fixed_text_area[0].classList); + $fixed_text_area.addClass($textarea[0].className); $fixed_text_area.insertAfter($textarea); } + var style = window.getComputedStyle($textarea[0], null); + if (style.resize === 'vertical') { + $textarea[0].style.resize = 'none'; + } else if (style.resize === 'both') { + $textarea[0].style.resize = 'horizontal'; + } resize(); if ($textarea.__auto_resized) { return; @@ -499,7 +505,7 @@ function autoresize ($textarea, options) { } else { heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); } - $fixed_text_area.width($textarea.outerWidth()); + $fixed_text_area.width($textarea.width()); $fixed_text_area.val($textarea.val()); var height = $fixed_text_area[0].scrollHeight; $textarea.css({height: Math.max(height + heightOffset, min_height)}); diff --git a/addons/web/static/src/js/view_manager.js b/addons/web/static/src/js/view_manager.js index c5db4b954ca..2ae53aabb22 100644 --- a/addons/web/static/src/js/view_manager.js +++ b/addons/web/static/src/js/view_manager.js @@ -130,8 +130,10 @@ var ViewManager = Widget.extend(ControlPanelMixin, { var view = this.views[view_type]; var old_view = this.active_view; - if (!view) { + if (!view || this.currently_switching) { return $.Deferred().reject(); + } else { + this.currently_switching = true; // prevent overlapping switches } if (view.multi_record) { @@ -156,11 +158,23 @@ var ViewManager = Widget.extend(ControlPanelMixin, { self.searchview.do_search(); }); } - return $.when(view.created, this.active_search).then(function () { + var switched = $.when(view.created, this.active_search).then(function () { return self._display_view(view_options, old_view).then(function () { self.trigger('switch_mode', view_type, no_store, view_options); }); }); + switched.fail(function(e) { + if (!(e && e.code === 200 && e.data.exception_type)) { + self.do_warn(_t("Error"), view.controller.display_name + _t(" view couldn't be loaded")); + } + // Restore internal state + self.active_view = old_view; + self.view_stack.pop(); + }); + switched.always(function () { + self.currently_switching = false; + }); + return switched; }, _display_view: function (view_options, old_view) { var self = this; @@ -239,7 +253,6 @@ var ViewManager = Widget.extend(ControlPanelMixin, { }, select_view: function (index) { var view_type = this.view_stack[index].type; - this.view_stack.splice(index); return this.switch_mode(view_type); }, /** @@ -262,10 +275,10 @@ var ViewManager = Widget.extend(ControlPanelMixin, { }); // Add onclick event listener - this.control_elements.$switch_buttons.siblings('button').click(function(event) { + this.control_elements.$switch_buttons.siblings('button').click(_.debounce(function(event) { var view_type = $(event.target).data('view-type'); self.switch_mode(view_type); - }); + }, 200, true)); } }, /** |
