From 8af49094d327c1e4f5c7b480c4557d298f9b0d39 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Tue, 26 Aug 2008 13:09:50 +0000 Subject: [PATCH] fixes #1245 (ITree in IOrderedLayout in IE6) svn changeset:5271/svn branch:trunk --- WebContent/ITMILL/themes/default/styles.css | 22 +++++++++++++ .../ITMILL/themes/default/tree/tree.css | 22 +++++++++++++ .../toolkit/terminal/gwt/client/ui/ITree.java | 31 ++++++++++++++----- 3 files changed, 68 insertions(+), 7 deletions(-) diff --git a/WebContent/ITMILL/themes/default/styles.css b/WebContent/ITMILL/themes/default/styles.css index 16a653e081..64704415d6 100644 --- a/WebContent/ITMILL/themes/default/styles.css +++ b/WebContent/ITMILL/themes/default/styles.css @@ -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; diff --git a/WebContent/ITMILL/themes/default/tree/tree.css b/WebContent/ITMILL/themes/default/tree/tree.css index f905658f63..067483ebb0 100644 --- a/WebContent/ITMILL/themes/default/tree/tree.css +++ b/WebContent/ITMILL/themes/default/tree/tree.css @@ -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; diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITree.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITree.java index 2169a41ab8..4615d3990f 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITree.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITree.java @@ -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"); -- 2.39.5