From 4d9a51f171cab30431776dfb9349925ae83b77b8 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 2 Oct 2009 15:30:22 +0000 Subject: [PATCH] Test case and fix for #3458 - Extra scrollbars inside SplitPanel when content changes svn changeset:9057/svn branch:6.1 --- .../terminal/gwt/client/ui/VSplitPanel.java | 5 ++ .../splitpanel/SplitPanelExtraScrollbars.html | 42 ++++++++++++ .../splitpanel/SplitPanelExtraScrollbars.java | 67 +++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 src/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.html create mode 100644 src/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.java diff --git a/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java b/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java index 688283e61d..28dba93a04 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java @@ -198,6 +198,11 @@ public class VSplitPanel extends ComplexPanel implements Container, } }); } + + // This is needed at least for cases like #3458 to take + // appearing/disappearing scrollbars into account. + client.runDescendentsLayout(this); + rendering = false; } diff --git a/src/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.html b/src/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.html new file mode 100644 index 0000000000..e8e7395198 --- /dev/null +++ b/src/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.html @@ -0,0 +1,42 @@ + + + + + + +SplitPanelExtraScrollbars + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SplitPanelExtraScrollbars
open/run/com.vaadin.tests.components.splitpanel.SplitPanelExtraScrollbars
waitForVaadin
clickvaadin=runcomvaadintestscomponentssplitpanelSplitPanelExtraScrollbars::/VSplitPanelHorizontal[0]/VHorizontalLayout[0]/ChildComponentContainer[0]/VNativeButton[0]
waitForVaadin
screenCapture
+ + diff --git a/src/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.java b/src/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.java new file mode 100644 index 0000000000..9d9800eeaf --- /dev/null +++ b/src/com/vaadin/tests/components/splitpanel/SplitPanelExtraScrollbars.java @@ -0,0 +1,67 @@ +package com.vaadin.tests.components.splitpanel; +import com.vaadin.terminal.Sizeable; +import com.vaadin.tests.components.AbstractTestCase; +import com.vaadin.ui.Button; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.NativeButton; +import com.vaadin.ui.SplitPanel; +import com.vaadin.ui.Window; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; + +public class SplitPanelExtraScrollbars extends AbstractTestCase implements + ClickListener { + + private SplitPanel sp; + private HorizontalLayout hl; + private Button b; + + @Override + public void init() { + sp = new SplitPanel(SplitPanel.ORIENTATION_HORIZONTAL); + sp.setSizeFull(); + sp.setSplitPosition(0, Sizeable.UNITS_PIXELS); + + hl = new HorizontalLayout(); + hl.setMargin(true); + hl.setWidth("100%"); + hl.setHeight(null); + + b = createButton("200px"); + sp.setSecondComponent(hl); + hl.addComponent(b); + + Window w = new Window("Test", sp); + setMainWindow(w); + } + + private Button createButton(String height) { + Button b = new NativeButton("A BIG button"); + b.setHeight(height); + b.addListener(this); + return b; + } + + @Override + protected String getDescription() { + return "Click the button to change its height. Making the button higher than the browser should not cause vertical but not horizontal scrollbars to appear."; + } + + @Override + protected Integer getTicketNumber() { + return 3458; + } + + public void buttonClick(ClickEvent event) { + if (b.getHeight() == 200) { + b.setHeight("1200px"); + } else { + b.setHeight("200px"); + } + + // Sending all changes in one repaint triggers the bug + hl.requestRepaint(); + sp.requestRepaint(); + } + +} -- 2.39.5