From 442f74ff39a36563f1122b1cb8d1b40c003cae79 Mon Sep 17 00:00:00 2001 From: Pierre Paridans Date: Fri, 20 Sep 2019 14:11:28 +0000 Subject: [PATCH] [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 Co-authored-by: Romeo Fragomeli --- addons/web/static/src/js/core/dom.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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');