summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2016-10-19 18:16:14 +0200
committerChristophe Simonis <chs@odoo.com>2016-10-19 18:16:14 +0200
commit938ffb92da1ea898f661aec04745f7630e2f378c (patch)
tree7faeed8433101836cd0239cf6c23629ef1f1289d /addons/web/static/src/js
parent1f9e92dfef325b6727e1bee3de55bff095ec6cf2 (diff)
parent6466aa499fc37bba5f4feeeecac99448ef88e62e (diff)
[MERGE] forward port branch 10.0 up to 6466aa4
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/view_manager.js3
-rw-r--r--addons/web/static/src/js/views/form_common.js1
-rw-r--r--addons/web/static/src/js/views/form_relational_widgets.js3
-rw-r--r--addons/web/static/src/js/views/list_view.js2
-rw-r--r--addons/web/static/src/js/web_client.js46
5 files changed, 37 insertions, 18 deletions
diff --git a/addons/web/static/src/js/view_manager.js b/addons/web/static/src/js/view_manager.js
index 4255f163068..e0d0135185f 100644
--- a/addons/web/static/src/js/view_manager.js
+++ b/addons/web/static/src/js/view_manager.js
@@ -459,6 +459,9 @@ var ViewManager = Widget.extend(ControlPanelMixin, {
}
},
do_load_state: function(state, warm) {
+ if (state.view_type && state.view_type !== this.active_view.type) {
+ this.switch_mode(state.view_type, true);
+ }
this.active_view.controller.do_load_state(state, warm);
},
});
diff --git a/addons/web/static/src/js/views/form_common.js b/addons/web/static/src/js/views/form_common.js
index 82c3bc8c4a7..65e94e671eb 100644
--- a/addons/web/static/src/js/views/form_common.js
+++ b/addons/web/static/src/js/views/form_common.js
@@ -430,6 +430,7 @@ var FormWidget = Widget.extend(InvisibilityChangerMixin, {
this.process_modifiers();
this._super();
this.$el.addClass(this.node.attrs["class"] || "");
+ this.$el.attr('style', this.node.attrs.style);
},
destroy: function() {
$.fn.tooltip('destroy');
diff --git a/addons/web/static/src/js/views/form_relational_widgets.js b/addons/web/static/src/js/views/form_relational_widgets.js
index dd4c4fb0fb6..00640696b41 100644
--- a/addons/web/static/src/js/views/form_relational_widgets.js
+++ b/addons/web/static/src/js/views/form_relational_widgets.js
@@ -1275,6 +1275,9 @@ var FieldOne2Many = FieldX2Many.extend({
return self.mutex.def;
});
},
+ is_false: function() {
+ return false;
+ },
});
var Many2ManyListView = X2ManyListView.extend({
diff --git a/addons/web/static/src/js/views/list_view.js b/addons/web/static/src/js/views/list_view.js
index f2e4f565a79..9382b255b01 100644
--- a/addons/web/static/src/js/views/list_view.js
+++ b/addons/web/static/src/js/views/list_view.js
@@ -1733,7 +1733,7 @@ var Column = Class.extend({
}
var aggregation_func = (this.sum && 'sum') || (this.avg && 'avg') ||
- (this.max && 'max') || (this.min && 'min') || this.group_operator;
+ (this.max && 'max') || (this.min && 'min');
if (!aggregation_func) {
return {};
diff --git a/addons/web/static/src/js/web_client.js b/addons/web/static/src/js/web_client.js
index d94f686c440..52962ed284b 100644
--- a/addons/web/static/src/js/web_client.js
+++ b/addons/web/static/src/js/web_client.js
@@ -113,25 +113,37 @@ return AbstractWebClient.extend({
}
},
on_hashchange: function(event) {
+ if (this._ignore_hashchange) {
+ this._ignore_hashchange = false;
+ return;
+ }
+
var self = this;
- var stringstate = event.getState(false);
- if (!_.isEqual(this._current_state, stringstate)) {
- var state = event.getState(true);
- if(!state.action && state.menu_id) {
- self.menu.is_bound.done(function() {
- self.menu.menu_click(state.menu_id);
- });
- } else {
- state._push_me = false; // no need to push state back...
- this.action_manager.do_load_state(state, !!this._current_state).then(function () {
- var action = self.action_manager.get_inner_action();
- if (action) {
- self.menu.open_action(action.action_descr.id);
- }
- });
+ this.clear_uncommitted_changes().then(function () {
+ var stringstate = event.getState(false);
+ if (!_.isEqual(self._current_state, stringstate)) {
+ var state = event.getState(true);
+ if(!state.action && state.menu_id) {
+ self.menu.is_bound.done(function() {
+ self.menu.menu_click(state.menu_id);
+ });
+ } else {
+ state._push_me = false; // no need to push state back...
+ self.action_manager.do_load_state(state, !!self._current_state).then(function () {
+ var action = self.action_manager.get_inner_action();
+ if (action) {
+ self.menu.open_action(action.action_descr.id);
+ }
+ });
+ }
}
- }
- this._current_state = stringstate;
+ self._current_state = stringstate;
+ }, function () {
+ if (event) {
+ self._ignore_hashchange = true;
+ window.location = event.originalEvent.oldURL;
+ }
+ });
},
on_menu_action: function(options) {
var self = this;