summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2013-11-06 15:26:42 +0200
committerArtur Signell <artur@vaadin.com>2013-11-06 15:26:42 +0200
commitc351b6464a6154205a8bd6f79880df968df68777 (patch)
tree778d1ade030980e39e2f802a1ec4f1036396b480
parent533ddcda271b7226b38c035adf3073062c562653 (diff)
downloadvaadin-framework-c351b6464a6154205a8bd6f79880df968df68777.tar.gz
vaadin-framework-c351b6464a6154205a8bd6f79880df968df68777.zip
Revert "Make Panel scroll the correct div (#12736)"
Revert "Reverted change in how hack works (#12727, #12736)" Revert "Fixes the handling of the scroll position of a Window (#12736)" Revert "Recovering scroll position after regression problems. (#12727)" Revert "Ticket #12727 - Panels get unnecessary scroll bars in WebKit when content is 100% wide." This reverts commit 6a63d12afc5a4bf3971dd016f8e2761cd27bcc74. This reverts commit c48c94dc23da22b6d885c69b0bc697257f9dbf11. This reverts commit 017bd0684c7d6c8475c8b43514e6f3998095c8d6. This reverts commit 51a46a038fe0353f4babfd8218153eb68e2602ca. This reverts commit ab5b20cf502f99944c82f619ffef387f0525e8ba. Test cases were left as-is as the issue (#12736) still needs a workaround Change-Id: I0b6c2afb4a9be8629f2a8f880a8ae8d0a6d5088f
-rw-r--r--client/src/com/vaadin/client/Util.java51
-rw-r--r--client/src/com/vaadin/client/ui/VPanel.java2
-rw-r--r--client/src/com/vaadin/client/ui/VWindow.java33
3 files changed, 29 insertions, 57 deletions
diff --git a/client/src/com/vaadin/client/Util.java b/client/src/com/vaadin/client/Util.java
index fd7a354569..7c7978be09 100644
--- a/client/src/com/vaadin/client/Util.java
+++ b/client/src/com/vaadin/client/Util.java
@@ -32,7 +32,6 @@ import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.Display;
-import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.dom.client.Touch;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
@@ -556,56 +555,6 @@ public class Util {
}
/**
- * Prevents some browsers from adding scroll bars to a component (such as a
- * Window) whose contents fit in the component.
- * <p>
- * See: bugs #11994 and #12736.
- *
- * @param contentNode
- * an element that is scrollable
- *
- * @since 7.1.8
- */
- public static void removeUnneededScrollbars(final Element scrollable) {
- if (BrowserInfo.get().isWebkit()) {
-
- /*
- * Shake up the DOM a bit to make the window shed unnecessary
- * scrollbars and resize correctly afterwards. This resulting code
- * took over a week to summon forth, and involved some pretty hairy
- * black magic. Don't touch it unless you know what you're doing!
- * Fixes ticket #11994. Later modified to fix ticket #12736.
- */
- Scheduler.get().scheduleFinally(new ScheduledCommand() {
-
- @Override
- public void execute() {
- // Adjusting the width or height may change the scroll
- // position, so store the current position
- int horizontalScrollPosition = scrollable.getScrollLeft();
- int verticalScrollPosition = scrollable.getScrollTop();
-
- final String oldWidth = scrollable.getStyle().getWidth();
- final String oldHeight = scrollable.getStyle().getHeight();
-
- scrollable.getStyle().setWidth(110, Unit.PCT);
- scrollable.getOffsetWidth();
- scrollable.getStyle().setProperty("width", oldWidth);
- scrollable.getStyle().setHeight(110, Unit.PCT);
- scrollable.getOffsetHeight();
- scrollable.getStyle().setProperty("height", oldHeight);
-
- // Restore the scroll position
- scrollable.setScrollLeft(horizontalScrollPosition);
- scrollable.setScrollTop(verticalScrollPosition);
-
- }
- });
-
- }
- }
-
- /**
* Parses shared state and fetches the relative size of the component. If a
* dimension is not specified as relative it will return -1. If the shared
* state does not contain width or height specifications this will return
diff --git a/client/src/com/vaadin/client/ui/VPanel.java b/client/src/com/vaadin/client/ui/VPanel.java
index 307a2e4a91..6b02f079d1 100644
--- a/client/src/com/vaadin/client/ui/VPanel.java
+++ b/client/src/com/vaadin/client/ui/VPanel.java
@@ -24,7 +24,6 @@ import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.SimplePanel;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.Focusable;
-import com.vaadin.client.Util;
import com.vaadin.client.ui.ShortcutActionHandler.ShortcutActionHandlerOwner;
import com.vaadin.client.ui.TouchScrollDelegate.TouchScrollHandler;
@@ -207,6 +206,5 @@ public class VPanel extends SimplePanel implements ShortcutActionHandlerOwner,
touchScrollHandler = TouchScrollDelegate.enableTouchScrolling(this);
}
touchScrollHandler.addElement(contentNode);
- Util.removeUnneededScrollbars(contentNode);
}
}
diff --git a/client/src/com/vaadin/client/ui/VWindow.java b/client/src/com/vaadin/client/ui/VWindow.java
index 62937b6a67..396169eb8c 100644
--- a/client/src/com/vaadin/client/ui/VWindow.java
+++ b/client/src/com/vaadin/client/ui/VWindow.java
@@ -345,11 +345,36 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner,
if (!visibilityChangesDisabled) {
super.setVisible(visible);
}
+
if (visible && BrowserInfo.get().isWebkit()) {
- Util.removeUnneededScrollbars((Element) contents
- .getFirstChildElement());
- updateContentsSize();
- positionOrSizeUpdated();
+
+ /*
+ * Shake up the DOM a bit to make the window shed unnecessary
+ * scrollbars and resize correctly afterwards. This resulting code
+ * took over a week to summon forth, and involved some pretty hairy
+ * black magic. Don't touch it unless you know what you're doing!
+ * Fixes ticket #11994
+ */
+ Scheduler.get().scheduleFinally(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ final com.google.gwt.dom.client.Element scrollable = contents
+ .getFirstChildElement();
+ final String oldWidth = scrollable.getStyle().getWidth();
+ final String oldHeight = scrollable.getStyle().getHeight();
+
+ scrollable.getStyle().setWidth(110, Unit.PCT);
+ scrollable.getOffsetWidth();
+ scrollable.getStyle().setProperty("width", oldWidth);
+
+ scrollable.getStyle().setHeight(110, Unit.PCT);
+ scrollable.getOffsetHeight();
+ scrollable.getStyle().setProperty("height", oldHeight);
+
+ updateContentsSize();
+ positionOrSizeUpdated();
+ }
+ });
}
}