]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix for #5537
authorJohn Alhroos <john.ahlroos@itmill.com>
Thu, 2 Sep 2010 06:35:57 +0000 (06:35 +0000)
committerJohn Alhroos <john.ahlroos@itmill.com>
Thu, 2 Sep 2010 06:35:57 +0000 (06:35 +0000)
svn changeset:14682/svn branch:6.4

WebContent/VAADIN/themes/base/menubar/menubar.css
src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java

index 632850ea897fb8f3ee49a4d23e9d0c7aef91d0ab..1ce42ce65727e93d9ee79b7df8175526a4634d85 100644 (file)
 .v-menubar .v-icon,
 .v-menubar-submenu .v-icon {
        margin-right: 3px;
+}
+
+.v-menubar-popup:focus,
+.v-menubar-popup .popupContent:focus,
+.v-menubar-popup .popupContent .v-menubar-submenu:focus{
+       outline: none;  
 }
\ No newline at end of file
index 6899a2ca9fb3d955abd2902eeaa5b4ced2b0feeb..4a8ff451ca7d08e54cc789876d8651ee085c21af 100644 (file)
@@ -90,7 +90,6 @@ public class VMenuBar extends SimpleFocusablePanel implements Paintable,
     }
 
     public VMenuBar(boolean subMenu) {
-        super();
 
         items = new ArrayList<CustomMenuItem>();
         popup = null;
@@ -286,7 +285,7 @@ public class VMenuBar extends SimpleFocusablePanel implements Paintable,
     public void onMenuClick(int clickedItemId) {
         // Cancel the focus event handling since focus was gained by
         // clicking an item.
-        if (focusDelayTimer != null) {
+        if (focusDelayTimer != null || subMenu) {
             focusDelayTimer.cancel();
         }
 
@@ -416,6 +415,15 @@ public class VMenuBar extends SimpleFocusablePanel implements Paintable,
                 if (isEnabled() && targetItem.isEnabled()) {
                     itemClick(targetItem);
                 }
+                if (subMenu) {
+                    // Prevent moving keyboard focus to child menus
+                    VMenuBar parent = parentMenu;
+                    while (parent.getParentMenu() != null) {
+                        parent = parent.getParentMenu();
+                    }
+                    parent.setFocus(true);
+                }
+
                 break;
 
             case Event.ONMOUSEOVER:
@@ -428,6 +436,13 @@ public class VMenuBar extends SimpleFocusablePanel implements Paintable,
                 itemOut(targetItem);
                 break;
             }
+        } else if (subMenu && DOM.eventGetType(e) == Event.ONCLICK && subMenu) {
+            // Prevent moving keyboard focus to child menus
+            VMenuBar parent = parentMenu;
+            while (parent.getParentMenu() != null) {
+                parent = parent.getParentMenu();
+            }
+            parent.setFocus(true);
         }
     }