diff options
| author | Aaron Bohy <aab@odoo.com> | 2018-03-08 14:57:43 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2018-03-10 09:01:46 +0100 |
| commit | 4e204ed2233ccd36b2eb7d3e56bfa741b9cb3e14 (patch) | |
| tree | a4c5dc6c77459b1590c601d4b21ca203ccc005f5 /addons/web/static/src/js/chrome/action_manager.js | |
| parent | 1a99d22f19949cf8eb689a6e2d6eda859c963cf9 (diff) | |
[IMP] web: restore scroll position
This rev. improves the way the scroll position is restored when
coming back to a view (e.g. open a kanban view, scroll, click on a
record to open it in a form view, go back to kanban using the
breadcrumbs):
- generalize the scroll position handling from web_enterprise to
web to make it available in the community webclient as well
- also restore left scroll position, not only top (especially
useful for grouped Kanban views with a lot of columns)
- handle the case where the scrolling area is a sub element of
the view (e.g. the grouped Kanban view in mobile).
Task 34037
Co-authored-by: Mohammed Shekha <msh@openerp.com>
Co-authored-by: Ankit Sathvara <asa@odoo.com>
Diffstat (limited to 'addons/web/static/src/js/chrome/action_manager.js')
| -rw-r--r-- | addons/web/static/src/js/chrome/action_manager.js | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/addons/web/static/src/js/chrome/action_manager.js b/addons/web/static/src/js/chrome/action_manager.js index 1e9c52238bc..4cf10b8813a 100644 --- a/addons/web/static/src/js/chrome/action_manager.js +++ b/addons/web/static/src/js/chrome/action_manager.js @@ -258,7 +258,9 @@ var ActionManager = Widget.extend({ callbacks: [{widget: controller.widget}], }); - this.trigger_up('scrollTo', {offset: controller.scrollTop || 0}); + if (controller.scrollPosition) { + this.trigger_up('scrollTo', controller.scrollPosition); + } if (!controller.widget.need_control_panel) { this.controlPanel.do_hide(); @@ -294,7 +296,7 @@ var ActionManager = Widget.extend({ _detachCurrentController: function () { var currentController = this.getCurrentController(); if (currentController) { - currentController.scrollTop = this._getScrollTop(); + currentController.scrollPosition = this._getScrollPosition(); dom.detach([{widget: currentController.widget}]); } }, @@ -613,19 +615,19 @@ var ActionManager = Widget.extend({ return state; }, /** - * Returns the current vertical scroll position. + * Returns the current horizontal and vertical scroll positions. * * @private - * @returns {integer} + * @returns {Object} */ - _getScrollTop: function () { - var scrollTop; - this.trigger_up('getScrollTop', { - callback: function (value) { - scrollTop = value; + _getScrollPosition: function () { + var scrollPosition; + this.trigger_up('getScrollPosition', { + callback: function (_scrollPosition) { + scrollPosition = _scrollPosition; } }); - return scrollTop; + return scrollPosition; }, /** * Dispatches the given action to the corresponding handler to execute it, |
