]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixes Tree mouse selection in IE (broken by keyboard navigation).
authorJohn Alhroos <john.ahlroos@itmill.com>
Wed, 19 May 2010 06:43:29 +0000 (06:43 +0000)
committerJohn Alhroos <john.ahlroos@itmill.com>
Wed, 19 May 2010 06:43:29 +0000 (06:43 +0000)
svn changeset:13246/svn branch:6.4

src/com/vaadin/terminal/gwt/client/ui/VTree.java

index 7315376f8f1ff6a94bf8039eefe280a41a5cdf5a..b0caf4a6599c6ef95080b7b5dc426bb1cb6ca103 100644 (file)
@@ -136,20 +136,20 @@ public class VTree extends FocusPanel implements Paintable, VHasDropHandler,
     public void onBrowserEvent(Event event) {
         super.onBrowserEvent(event);
         if (event.getTypeInt() == Event.ONMOUSEDOWN) {
-            setFocus(true);
             // Prevent default text selection in IE
             if (BrowserInfo.get().isIE()) {
                 ((Element) event.getEventTarget().cast()).setPropertyJSO(
                         "onselectstart", applyDisableTextSelectionIEHack());
+            } else {
+                setFocus(true);
             }
-            event.preventDefault();
+
         } else if (event.getTypeInt() == Event.ONMOUSEUP) {
             // Remove IE text selection hack
             if (BrowserInfo.get().isIE()) {
                 ((Element) event.getEventTarget().cast()).setPropertyJSO(
                         "onselectstart", null);
             }
-            event.preventDefault();
         } else if (event.getTypeInt() == Event.ONKEYUP) {
             if (selectionHasChanged) {                
                 if(event.getKeyCode() == getNavigationDownKey() && !event.getShiftKey()){
@@ -617,7 +617,7 @@ public class VTree extends FocusPanel implements Paintable, VHasDropHandler,
                 if (getElement() == target || ie6compatnode == target) {
                     // state change
                     toggleState();
-                } else if (!readonly && inCaption) {
+                } else if (!readonly && inCaption && selectable) {
                     // caption click = selection change && possible click event
                     if (handleClickSelection(event.getCtrlKey()
                             || event.getMetaKey(), event.getShiftKey())) {
@@ -1426,7 +1426,7 @@ public class VTree extends FocusPanel implements Paintable, VHasDropHandler,
      */
     public void onFocus(FocusEvent event) {
         // If no node has focus, focus the first item in the tree
-        if (focusedNode == null) {
+        if (focusedNode == null && selectable) {
             setFocusedNode((TreeNode) body.getWidget(0));
         }
     }
@@ -1511,13 +1511,15 @@ public class VTree extends FocusPanel implements Paintable, VHasDropHandler,
                 }
             }
 
-            if (node != null) {
+            if (node != null && selectable) {
                 setFocusedNode(node);
                 if (!ctrl && !shift) {
                     selectNode(node, true);
-                } else if (shift) {
+                } else if (shift && isMultiselect) {
                     deselectAll();
                     selectNodeRange(lastSelection.key, node.key);
+                } else if (shift) {
+                    selectNode(node, true);
                 }
             }
             return true;
@@ -1532,13 +1534,16 @@ public class VTree extends FocusPanel implements Paintable, VHasDropHandler,
             } else if (focusedNode.getParentNode() != null) {
                 node = focusedNode.getParentNode();
             }
-            if (node != null) {
+            if (node != null && selectable) {
                 setFocusedNode(node);
+
                 if (!ctrl && !shift) {
                     selectNode(node, true);
-                } else if (shift) {
+                } else if (shift && isMultiselect) {
                     deselectAll();
                     selectNodeRange(lastSelection.key, node.key);
+                } else if (shift) {
+                    selectNode(node, true);
                 }
             }
             return true;