]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #1245 (ITree in IOrderedLayout in IE6)
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 26 Aug 2008 13:09:50 +0000 (13:09 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Tue, 26 Aug 2008 13:09:50 +0000 (13:09 +0000)
svn changeset:5271/svn branch:trunk

WebContent/ITMILL/themes/default/styles.css
WebContent/ITMILL/themes/default/tree/tree.css
src/com/itmill/toolkit/terminal/gwt/client/ui/ITree.java

index 16a653e081436a62e73cd2aab1e854ad8682742f..64704415d64c74aae4c10f8ec57722beb493a993 100644 (file)
@@ -2170,6 +2170,27 @@ input.i-modified,
        text-align: left /* Force default alignment */
 }
 
+/* ie6compatnode is hidden from non ie6 browsers, for ie6 
+ * uses weird hack to sink all events properly 
+ */
+.i-tree-node-ie6compatnode {
+       display: none;
+}
+
+* html .i-tree-node-ie6compatnode {
+       display: inline;
+       float:left;
+       background: orange;
+       margin:0;
+       width:14px;
+       height:10px;
+       padding:1px;
+       filter: Alpha(opacity=0);
+}
+* html .i-tree-node {
+       clear: both;
+}
+
 .i-tree-node {
        background: transparent url(tree/img/collapsed.png) no-repeat 2px 1px;
 }
@@ -2182,6 +2203,7 @@ input.i-modified,
 .i-tree-node-caption {
        margin-left: 16px;
 }
+
 .i-tree-node span {
        padding: 0 2px;
        cursor: pointer;
index f905658f63c8c877fa6243a52e9540f994938079..067483ebb07c91e0356f4d4b86e0a1e97790bc81 100644 (file)
@@ -2,6 +2,27 @@
        text-align: left /* Force default alignment */
 }
 
+/* ie6compatnode is hidden from non ie6 browsers, for ie6 
+ * uses weird hack to sink all events properly 
+ */
+.i-tree-node-ie6compatnode {
+       display: none;
+}
+
+* html .i-tree-node-ie6compatnode {
+       display: inline;
+       float:left;
+       background: orange;
+       margin:0;
+       width:14px;
+       height:10px;
+       padding:1px;
+       filter: Alpha(opacity=0);
+}
+* html .i-tree-node {
+       clear: both;
+}
+
 .i-tree-node {
        background: transparent url(img/collapsed.png) no-repeat 2px 1px;
 }
@@ -14,6 +35,7 @@
 .i-tree-node-caption {
        margin-left: 16px;
 }
+
 .i-tree-node span {
        padding: 0 2px;
        cursor: pointer;
index 2169a41ab8bef8d3e10350a44ae8edbf0b9b2dc1..4615d3990fe08c3e34a979bae4f714f733dab291 100644 (file)
@@ -185,6 +185,8 @@ public class ITree extends FlowPanel implements Paintable {
 
         private Icon icon;
 
+        private Element ie6compatnode;
+
         public TreeNode() {
             constructDom();
             sinkEvents(Event.ONCLICK);
@@ -195,13 +197,20 @@ public class ITree extends FlowPanel implements Paintable {
             if (disabled) {
                 return;
             }
-            final Element target = DOM.eventGetTarget(event);
-            if (DOM.compare(getElement(), target)) {
-                // state change
-                toggleState();
-            } else if (!readonly && DOM.compare(target, nodeCaptionSpan)) {
-                // caption click = selection change
-                toggleSelection();
+            if (DOM.eventGetType(event) == Event.ONCLICK) {
+                final Element target = DOM.eventGetTarget(event);
+                if (DOM.compare(getElement(), target)
+                        || DOM.compare(ie6compatnode, target)) {
+                    // state change
+                    toggleState();
+                } else if (!readonly && DOM.compare(target, nodeCaptionSpan)) {
+                    // caption click = selection change
+                    toggleSelection();
+                }
+                DOM.eventCancelBubble(event, true);
+            } else {
+                ApplicationConnection.getConsole().log(
+                        "ITree event?? " + DOM.eventToString(event));
             }
 
         }
@@ -217,6 +226,14 @@ public class ITree extends FlowPanel implements Paintable {
         }
 
         protected void constructDom() {
+            // workaround for a very weird IE6 issue #1245
+            ie6compatnode = DOM.createDiv();
+            setStyleName(ie6compatnode, CLASSNAME + "-ie6compatnode");
+            DOM.setInnerText(ie6compatnode, " ");
+            DOM.appendChild(getElement(), ie6compatnode);
+
+            DOM.sinkEvents(ie6compatnode, Event.ONCLICK);
+
             nodeCaptionDiv = DOM.createDiv();
             DOM.setElementProperty(nodeCaptionDiv, "className", CLASSNAME
                     + "-caption");