diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2008-03-10 12:11:07 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2008-03-10 12:11:07 +0000 |
commit | fe5f671a3a85d4575605ae20ceb48ee93665627d (patch) | |
tree | 9f68a42ab8c4d1c9ab6224f0a4894fd3f683bf25 | |
parent | 11d54e8ed0fef5178c46987b67d6859ac1caedf8 (diff) | |
download | vaadin-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.java | 17 |
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(); } }); |