From: Matti Tahvonen Date: Wed, 8 Oct 2008 11:03:38 +0000 (+0000) Subject: fixes #2138 Cleaning and fixing some scrollbar issues X-Git-Tag: 6.7.0.beta1~4011 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5d4b54cbbcbf16a75d51b35304af02d912fe4ef5;p=vaadin-framework.git fixes #2138 Cleaning and fixing some scrollbar issues svn changeset:5612/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Util.java b/src/com/itmill/toolkit/terminal/gwt/client/Util.java index 97f92abda6..10c3bcaee0 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/Util.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Util.java @@ -9,8 +9,11 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; @@ -242,4 +245,31 @@ public class Util { return detectedScrollbarSize; } + /** + * Run workaround for webkits overflow auto issue. + * + * See: our buh #2138 and https://bugs.webkit.org/show_bug.cgi?id=21462 + * + * @param elem + * with overflow auto + */ + public static void runWebkitOverflowAutoFix(final Element elem) { + // add max version if fix landes sometime to webkit + if (BrowserInfo.get().getWebkitVersion() > 0) { + DeferredCommand.addCommand(new Command() { + public void execute() { + // Dough, safari scoll auto means actually just a moped + elem.getStyle().setProperty("overflow", "hidden"); + (new Timer() { + @Override + public void run() { + elem.getStyle().setProperty("overflow", "auto"); + } + }).schedule(1); + } + }); + } + + } + } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java index e73f4e5bc8..01ede8079c 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IAccordion.java @@ -10,7 +10,6 @@ import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.Widget; @@ -21,6 +20,7 @@ import com.itmill.toolkit.terminal.gwt.client.ICaption; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.RenderSpace; import com.itmill.toolkit.terminal.gwt.client.UIDL; +import com.itmill.toolkit.terminal.gwt.client.Util; public class IAccordion extends ITabsheetBase implements ContainerResizedListener { @@ -161,24 +161,8 @@ public class IAccordion extends ITabsheetBase implements client.runDescendentsLayout(item); - if (BrowserInfo.get().getWebkitVersion() > 0) { - final Element selectedTabContent = getSelectedStack() - .getContainerElement(); - DeferredCommand.addCommand(new Command() { - public void execute() { - // Dough, safari scoll auto means actually just a moped - selectedTabContent.getStyle().setProperty("overflow", - "hidden"); - (new Timer() { - @Override - public void run() { - selectedTabContent.getStyle().setProperty( - "overflow", "auto"); - } - }).schedule(1); - } - }); - } + Util.runWebkitOverflowAutoFix(getSelectedStack().getContainerElement()); + } /** diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java index d4d6719082..7e4297a7bd 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java @@ -6,12 +6,9 @@ package com.itmill.toolkit.terminal.gwt.client.ui; import java.util.Set; -import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; @@ -306,23 +303,10 @@ public class IPanel extends SimplePanel implements Container, } } - if (BrowserInfo.get().getWebkitVersion() > 0) { - DeferredCommand.addCommand(new Command() { - public void execute() { - // Dough, safari scoll auto means actually just a moped - contentNode.getStyle().setProperty("overflow", "hidden"); - (new Timer() { - @Override - public void run() { - contentNode.getStyle().setProperty("overflow", - "auto"); - } - }).schedule(1); - } - }); - } - client.runDescendentsLayout(this); + + Util.runWebkitOverflowAutoFix(contentNode); + } @Override diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java index 30661d4354..0319b56696 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java @@ -312,6 +312,10 @@ public class ISplitPanel extends ComplexPanel implements Container, renderInformation.updateSize(getElement()); + // fixes scrollbars sometimes seen on webkit 528.5, but not in Safari + // 3.1 + Util.runWebkitOverflowAutoFix(secondContainer); + } private void setFirstWidget(Widget w) { 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 cee2cebe4a..e5e04c58a3 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java @@ -13,19 +13,18 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; -import com.itmill.toolkit.terminal.gwt.client.BrowserInfo; import com.itmill.toolkit.terminal.gwt.client.ContainerResizedListener; import com.itmill.toolkit.terminal.gwt.client.ICaption; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.RenderInformation; import com.itmill.toolkit.terminal.gwt.client.RenderSpace; import com.itmill.toolkit.terminal.gwt.client.UIDL; +import com.itmill.toolkit.terminal.gwt.client.Util; public class ITabsheet extends ITabsheetBase implements ContainerResizedListener { @@ -394,21 +393,7 @@ public class ITabsheet extends ITabsheetBase implements updateTabScroller(); - if (BrowserInfo.get().getWebkitVersion() > 0) { - DeferredCommand.addCommand(new Command() { - public void execute() { - // Dough, safari scoll auto means actually just a moped - contentNode.getStyle().setProperty("overflow", "hidden"); - (new Timer() { - @Override - public void run() { - contentNode.getStyle().setProperty("overflow", - "auto"); - } - }).schedule(100); - } - }); - } + Util.runWebkitOverflowAutoFix(contentNode); }