[FIX] When we click on "Point of Sale" in folder menu mode, it shows a blank menu
authorFabien Meghazi <fme@openerp.com>
Tue, 14 Feb 2012 16:26:57 +0000 (17:26 +0100)
committerFabien Meghazi <fme@openerp.com>
Tue, 14 Feb 2012 16:26:57 +0000 (17:26 +0100)
lp bug: https://launchpad.net/bugs/906732 fixed

bzr revid: fme@openerp.com-20120214162657-i8hes1iy67wi4isj

addons/web/static/src/js/chrome.js

index 0a19f2c..ba31ec8 100644 (file)
@@ -959,7 +959,8 @@ openerp.web.Menu =  openerp.web.OldWidget.extend(/** @lends openerp.web.Menu# */
     do_menu_click: function($clicked_menu, manual) {
         var $sub_menu, $main_menu,
             active = $clicked_menu.is('.active'),
-            sub_menu_visible = false;
+            sub_menu_visible = false,
+            has_submenu_items = false;
 
         if (this.$secondary_menu.has($clicked_menu).length) {
             $sub_menu = $clicked_menu.parents('.oe_secondary_menu');
@@ -970,15 +971,18 @@ openerp.web.Menu =  openerp.web.OldWidget.extend(/** @lends openerp.web.Menu# */
         }
 
         sub_menu_visible = $sub_menu.is(':visible');
+        has_submenu_items = !!$sub_menu.children().length;
         this.$secondary_menu.find('.oe_secondary_menu').hide();
 
         $('.active', this.$element.add(this.$secondary_menu)).removeClass('active');
         $main_menu.add($clicked_menu).add($sub_menu).addClass('active');
 
-        if (!(this.folded && manual)) {
-            this.do_show_secondary($sub_menu, $main_menu);
-        } else {
-            this.do_show_secondary();
+        if (has_submenu_items) {
+            if (!(this.folded && manual)) {
+                this.do_show_secondary($sub_menu, $main_menu);
+            } else {
+                this.do_show_secondary();
+            }
         }
 
         if ($main_menu != $clicked_menu) {
@@ -994,7 +998,7 @@ openerp.web.Menu =  openerp.web.OldWidget.extend(/** @lends openerp.web.Menu# */
                 return true;
             }
         } else if (this.folded) {
-            if (active && sub_menu_visible) {
+            if ((active && sub_menu_visible) || !has_submenu_items) {
                 $sub_menu.hide();
                 return true;
             }