summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorJulien Legros <jle@odoo.com>2016-01-19 11:37:27 +0100
committerJulien Legros <jle@odoo.com>2016-01-19 11:37:27 +0100
commitddcc62c6dd0a73a04c9f5f2078ecd338c0e146bb (patch)
treeff0837e802390cc9333fe306466a2e1f8b431641 /addons/web/static/src
parent85b3e96396b411a0b66863ddf6af854e22071e6f (diff)
parent365e298fb1907085d4071285c2be5dbcd5c59a0e (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.js4
-rw-r--r--addons/web/static/src/js/framework/utils.js10
-rw-r--r--addons/web/static/src/js/view_manager.js23
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));
}
},
/**