summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2008-03-10 12:11:07 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2008-03-10 12:11:07 +0000
commitfe5f671a3a85d4575605ae20ceb48ee93665627d (patch)
tree9f68a42ab8c4d1c9ab6224f0a4894fd3f683bf25
parent11d54e8ed0fef5178c46987b67d6859ac1caedf8 (diff)
downloadvaadin-framework-fe5f671a3a85d4575605ae20ceb48ee93665627d.tar.gz
vaadin-framework-fe5f671a3a85d4575605ae20ceb48ee93665627d.zip
ITabsheet: fixed very bad flickering issue (seen in WH)
svn changeset:4012/svn branch:trunk
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java
index 83f4f138b4..9fde75cd11 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java
@@ -31,6 +31,13 @@ public class ITabsheet extends ITabsheetBase implements
private String height;
private String width;
+ /**
+ * Previous visible widget is set invisible with CSS (not display: none, but
+ * visibility: hidden), to avoid flickering during render process. Normal
+ * visibility must be returned later when new widget is rendered.
+ */
+ private Widget previousVisibleWidget;
+
private final TabListener tl = new TabListener() {
public void onTabSelected(SourcesTabEvents sender, final int tabIndex) {
@@ -39,7 +46,12 @@ public class ITabsheet extends ITabsheetBase implements
// run updating variables in deferred command to bypass some FF
// optimization issues
DeferredCommand.addCommand(new Command() {
+
public void execute() {
+ previousVisibleWidget = tp.getWidget(tp
+ .getVisibleWidget());
+ DOM.setStyleAttribute(previousVisibleWidget
+ .getElement(), "visibility", "hidden");
client.updateVariable(id, "selected", ""
+ tabKeys.get(tabIndex), true);
}
@@ -142,6 +154,11 @@ public class ITabsheet extends ITabsheetBase implements
tp.showWidget(activeTabIndex);
(content).updateFromUIDL(contentUIDL, client);
ITabsheet.this.removeStyleDependentName("loading");
+ if (previousVisibleWidget != null) {
+ DOM.setStyleAttribute(previousVisibleWidget.getElement(),
+ "visibility", "");
+ previousVisibleWidget = null;
+ }
ITabsheet.this.iLayout();
}
});