summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorPierre Paridans <app@odoo.com>2019-09-20 14:11:28 +0000
committerfw-bot <otis@odoo.com>2019-09-23 09:10:05 +0000
commit442f74ff39a36563f1122b1cb8d1b40c003cae79 (patch)
tree27ba4e7902a829ca76b507991396089ef224ca7b /addons/web/static/src
parent7bea91260fe78741962c8105cc57e3c4c5a6efb6 (diff)
[FIX] web: crash when resizing on tablet
When having a long systray (icons from different apps, mode debug, multi-company...) the resize of the window can trigger a crash for apps that have not too much top-level menus (e.g. Contacts). This also happens when loading those apps. Steps to reproduce (on an iPad, portrait): * use a Runbot with all modules installed (12.0+) * activate "debug mode" * ensure that the menu/systray bar is quite full * open the "Contacts" app => traceback with a "cannot call getBoundingClientRect of undefined" error The reason is that the resize's callback iterate over the systray/menu items to find which one should be folded behind a "more" ("+") menu item. Sadly in some cases (combination of screen width, systray size, app's number of menus) it can lead to a traceback. This commit ensures that when looping for menu items, we don't try to reach an non-existing item. closes odoo/odoo#37245 X-original-commit: d7bae0329990171710acf2d9c0d4d9579cba2c0e Signed-off-by: Pierre Paridans <pparidans@users.noreply.github.com> Co-authored-by: Romeo Fragomeli <rfr@odoo.com>
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/core/dom.js2
1 files changed, 1 insertions, 1 deletions
diff --git a/addons/web/static/src/js/core/dom.js b/addons/web/static/src/js/core/dom.js
index 7be17700f98..e369cea9c8c 100644
--- a/addons/web/static/src/js/core/dom.js
+++ b/addons/web/static/src/js/core/dom.js
@@ -540,7 +540,7 @@ var dom = {
menuItemsWidth += computeFloatOuterWidthWithMargins($extraItemsToggle[0]);
do {
menuItemsWidth -= computeFloatOuterWidthWithMargins($items.eq(--nbItems)[0]);
- } while (!(maxWidth - menuItemsWidth >= -0.001));
+ } while (!(maxWidth - menuItemsWidth >= -0.001) && (nbItems > 0));
var $extraItems = $items.slice(nbItems).detach();
$extraItems.removeClass('nav-item');