summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/chrome/web_client.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/chrome/web_client.js')
-rw-r--r--addons/web/static/src/js/chrome/web_client.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/addons/web/static/src/js/chrome/web_client.js b/addons/web/static/src/js/chrome/web_client.js
index 76aadf49463..3f832a6a49f 100644
--- a/addons/web/static/src/js/chrome/web_client.js
+++ b/addons/web/static/src/js/chrome/web_client.js
@@ -4,6 +4,7 @@ odoo.define('web.WebClient', function (require) {
var AbstractWebClient = require('web.AbstractWebClient');
var config = require('web.config');
var data_manager = require('web.data_manager');
+var dom = require('web.dom');
var framework = require('web.framework');
var Menu = require('web.Menu');
var session = require('web.session');
@@ -177,6 +178,39 @@ return AbstractWebClient.extend({
this.menu.reflow();
}
},
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @override
+ */
+ _onGetScrollPosition: function (ev) {
+ ev.data.callback({
+ left: this.action_manager.el.scrollLeft,
+ top: this.action_manager.el.scrollTop,
+ });
+ },
+ /**
+ * @override
+ */
+ _onScrollTo: function (ev) {
+ var offset;
+ if (ev.data.selector) {
+ offset = dom.getPosition(document.querySelector(ev.data.selector));
+ // substract the position of the ActionManager as it is the
+ // scrolling element
+ var actionManagerOffset = dom.getPosition(this.action_manager.el);
+ offset.left -= actionManagerOffset.left;
+ offset.top -= actionManagerOffset.top;
+ } else {
+ offset = {top: ev.data.top || 0, left: ev.data.left || 0};
+ }
+
+ this.action_manager.el.scrollTop = offset.top;
+ this.action_manager.el.scrollLeft = offset.left;
+ },
});
});