From fe5f671a3a85d4575605ae20ceb48ee93665627d Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Mon, 10 Mar 2008 12:11:07 +0000 Subject: [PATCH] ITabsheet: fixed very bad flickering issue (seen in WH) svn changeset:4012/svn branch:trunk --- .../terminal/gwt/client/ui/ITabsheet.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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(); } }); -- 2.39.5