diff options
| author | Pierre Paridans <app@odoo.com> | 2019-09-20 14:11:28 +0000 |
|---|---|---|
| committer | Pierre Paridans <app@odoo.com> | 2019-09-24 07:50:38 +0000 |
| commit | dd9d6d0fac6ffc667b2e897434793db45ea201cc (patch) | |
| tree | 3cab16808f0f5576807bd75b59f0243ccf78be5d /addons/web/static/src/js | |
| parent | 1709fb99314c8b7b0ceacdc8260cb3ca6b0a0afe (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#37329
X-original-commit: odoo/odoo@d7bae0329990171710acf2d9c0d4d9579cba2c0e
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
Co-authored-by: Romeo Fragomeli <rfr@odoo.com>
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/core/dom.js | 2 |
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 f260478da1e..d2fdb41fefc 100644 --- a/addons/web/static/src/js/core/dom.js +++ b/addons/web/static/src/js/core/dom.js @@ -537,7 +537,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'); |
