]> source.dussan.org Git - vaadin-framework.git/commitdiff
Revert "Fixed lost scrollLeft when row count changed in Table (#12652)."
authorLeif Åstrand <leif@vaadin.com>
Fri, 15 Nov 2013 09:46:42 +0000 (09:46 +0000)
committerVaadin Code Review <review@vaadin.com>
Fri, 15 Nov 2013 14:14:28 +0000 (14:14 +0000)
This reverts commit 533ddcda271b7226b38c035adf3073062c562653.

Seems like the caused regressions are far from trivial to resolve. A new approach might be needed to resolve this issue.

Change-Id: I88cf75608e8d47fffab5a366a8ad1b3b70c1c11f

client/src/com/vaadin/client/Util.java
client/src/com/vaadin/client/ui/VScrollTable.java
uitest/src/com/vaadin/tests/components/table/TableHorizontalScrollPositionOnItemSetChange.html [deleted file]
uitest/src/com/vaadin/tests/components/table/TableHorizontalScrollPositionOnItemSetChange.java [deleted file]

index 7c7978be0922bad81d6b6754ed74ba848c94b9e8..89726702320223c16a549e43972205d7d7cd2c5a 100644 (file)
@@ -447,35 +447,6 @@ public class Util {
         return detectedScrollbarSize;
     }
 
-    /**
-     * Calculates maximum horizontal scrolling value for the given element.
-     * 
-     * @since 7.1.9
-     * @param element
-     *            which scrollLeft should be calculated
-     * @return maximum value for scrollLeft of the given element
-     */
-    public static int getMaxScrollLeft(final Element element) {
-        int scrollWidth = element.getScrollWidth();
-        int clientWidth = element.getClientWidth();
-        return scrollWidth - clientWidth;
-    }
-
-    /**
-     * Checks if scrollLeft of the element is at its maximum value. Returns
-     * false if the element can't be scrolled horizontally.
-     * 
-     * @since 7.1.9
-     * @param element
-     *            which scrollLeft should be checked
-     * @return true, if scrollLeft is at maximum (false if element can't be
-     *         scrolled horizontally)
-     */
-    public static boolean isScrollLeftAtMax(final Element element) {
-        int scrollLeft = element.getScrollLeft();
-        return scrollLeft != 0 && scrollLeft == getMaxScrollLeft(element);
-    }
-
     /**
      * Run workaround for webkits overflow auto issue.
      * 
@@ -497,8 +468,6 @@ public class Util {
             // check the scrolltop value before hiding the element
             final int scrolltop = elem.getScrollTop();
             final int scrollleft = elem.getScrollLeft();
-            final boolean scrollLeftAtMax = isScrollLeftAtMax(elem);
-
             elem.getStyle().setProperty("overflow", "hidden");
 
             Scheduler.get().scheduleDeferred(new Command() {
@@ -522,12 +491,6 @@ public class Util {
                         elem.setScrollTop(scrollvalue);
                     }
 
-                    // keep horizontal scroll at max if it was before vertical
-                    // scroll bar was added/removed
-                    if (scrollLeftAtMax) {
-                        elem.setScrollLeft(getMaxScrollLeft(elem));
-                    }
-
                     // fix for #6940 : Table horizontal scroll sometimes not
                     // updated when collapsing/expanding columns
                     // Also appeared in Safari 5.1 with webkit 534 (#7667)
index d1d73f4e91f83f7905af35198a9e935b77bcb6d0..c56a2a87728dc78caf7f7d139aaf72f581697993 100644 (file)
@@ -276,10 +276,6 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
      */
     private int detachedScrollPosition = 0;
 
-    // fields used in fixing erroneously lost scrollLeft
-    int lastScrollBodyHeight = 0;
-    boolean lastScrollLeftWasAtMax = false;
-
     /**
      * Represents a select range of rows
      */
@@ -1009,15 +1005,6 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
         initialContentReceived = true;
         sizeNeedsInit = true;
         scrollBody.restoreRowVisibility();
-
-        // At least FireFox requires that scrollLeft is restored deferred after
-        // scrollBody is recreated
-        Scheduler.get().scheduleFinally(new ScheduledCommand() {
-            @Override
-            public void execute() {
-                restoreScrollLeft();
-            }
-        });
     }
 
     /** For internal use only. May be removed or replaced in the future. */
@@ -6877,45 +6864,13 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
         return s;
     }
 
-    /**
-     * Tries to restore horizontal scroll position if it was lost due to change
-     * in the height of scrollBody (#12652).
-     */
-    private void restoreScrollLeft() {
-        int upcomingScrollLeft = scrollLeft;
-
-        if (lastScrollLeftWasAtMax) {
-            upcomingScrollLeft = Util.getMaxScrollLeft(scrollBodyPanel
-                    .getElement());
-        }
-        scrollBodyPanel.getElement().setScrollLeft(upcomingScrollLeft);
-    }
-
-    /**
-     * Checks if restore of scrollLeft is needed by checking if height of the
-     * scrollBody has changed.
-     * 
-     * @return true, if restore is required
-     */
-    private boolean isScrollLeftRestoreRequired() {
-        return (scrollBody.getElement().getClientHeight() != lastScrollBodyHeight);
-    }
-
     /**
      * This method has logic which rows needs to be requested from server when
      * user scrolls
      */
+
     @Override
     public void onScroll(ScrollEvent event) {
-        // restore in initializeRows() doesn't work right with Chrome
-        if (isScrollLeftRestoreRequired()) {
-            restoreScrollLeft();
-        }
-
-        lastScrollBodyHeight = scrollBody.getElement().getClientHeight();
-        lastScrollLeftWasAtMax = Util.isScrollLeftAtMax(scrollBodyPanel
-                .getElement());
-
         scrollLeft = scrollBodyPanel.getElement().getScrollLeft();
         scrollTop = scrollBodyPanel.getScrollPosition();
         /*
diff --git a/uitest/src/com/vaadin/tests/components/table/TableHorizontalScrollPositionOnItemSetChange.html b/uitest/src/com/vaadin/tests/components/table/TableHorizontalScrollPositionOnItemSetChange.html
deleted file mode 100644 (file)
index 6fd54ba..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head profile="http://selenium-ide.openqa.org/profiles/test-case">
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<link rel="selenium.base" href="http://localhost:8888/" />
-<title>TableHorizontalScrollPositionOnItemSetChange</title>
-</head>
-<body>
-       <table cellpadding="1" cellspacing="1" border="1">
-               <thead>
-                       <tr>
-                               <td rowspan="1" colspan="3">TableHorizontalScrollPositionOnItemSetChange</td>
-                       </tr>
-               </thead>
-               <tbody>
-                       <tr>
-                               <td>open</td>
-                               <td>/run/com.vaadin.tests.components.table.TableHorizontalScrollPositionOnItemSetChange?restartApplication</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>scrollLeft</td>
-                               <td>vaadin=runcomvaadintestscomponentstableTableHorizontalScrollPositionOnItemSetChange::PID_Shorscrolltable/domChild[1]</td>
-                               <td>326</td>
-                       </tr>
-                       <tr>
-                               <td>pause</td>
-                               <td>500</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>click</td>
-                               <td>vaadin=runcomvaadintestscomponentstableTableHorizontalScrollPositionOnItemSetChange::PID_Slessitems/domChild[0]/domChild[0]</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>pause</td>
-                               <td>500</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>screenCapture</td>
-                               <td></td>
-                               <td>left-scroll-position-stays-in-middle-with-fewer-items</td>
-                       </tr>
-                       <tr>
-                               <td>click</td>
-                               <td>vaadin=runcomvaadintestscomponentstableTableHorizontalScrollPositionOnItemSetChange::PID_Smoreitems/domChild[0]/domChild[0]</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>pause</td>
-                               <td>500</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>screenCapture</td>
-                               <td></td>
-                               <td>left-scroll-position-stays-in-middle-with-more-items</td>
-                       </tr>
-                       <tr>
-                               <td>scrollLeft</td>
-                               <td>vaadin=runcomvaadintestscomponentstableTableHorizontalScrollPositionOnItemSetChange::PID_Shorscrolltable/domChild[1]</td>
-                               <td>653</td>
-                       </tr>
-                       <tr>
-                               <td>pause</td>
-                               <td>500</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>click</td>
-                               <td>vaadin=runcomvaadintestscomponentstableTableHorizontalScrollPositionOnItemSetChange::PID_Slessitems/domChild[0]/domChild[0]</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>pause</td>
-                               <td>500</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>screenCapture</td>
-                               <td></td>
-                               <td>left-scroll-position-stays-max-with-fewer-items</td>
-                       </tr>
-                       <tr>
-                               <td>click</td>
-                               <td>vaadin=runcomvaadintestscomponentstableTableHorizontalScrollPositionOnItemSetChange::PID_Smoreitems/domChild[0]/domChild[0]</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>pause</td>
-                               <td>500</td>
-                               <td></td>
-                       </tr>
-                       <tr>
-                               <td>screenCapture</td>
-                               <td></td>
-                               <td>left-scroll-position-stays-max-with-more-items</td>
-                       </tr>
-                       <tr>
-                               <td>scrollLeft</td>
-                               <td>vaadin=runcomvaadintestscomponentstableTableHorizontalScrollPositionOnItemSetChange::PID_Shorscrolltable/domChild[1]</td>
-                               <td>0</td>
-                       </tr>
-               </tbody>
-       </table>
-</body>
-</html>
diff --git a/uitest/src/com/vaadin/tests/components/table/TableHorizontalScrollPositionOnItemSetChange.java b/uitest/src/com/vaadin/tests/components/table/TableHorizontalScrollPositionOnItemSetChange.java
deleted file mode 100644 (file)
index 1f59a84..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.vaadin.tests.components.table;
-
-import com.vaadin.server.VaadinRequest;
-import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.VerticalLayout;
-
-public class TableHorizontalScrollPositionOnItemSetChange extends
-        AbstractTestUI {
-
-    @Override
-    protected void setup(VaadinRequest request) {
-        VerticalLayout layout = new VerticalLayout();
-        layout.setMargin(true);
-        layout.setSpacing(true);
-        setContent(layout);
-
-        final Table table = new Table();
-        table.setWidth("640px");
-        table.setHeight("243px");
-        table.setId("horscrolltable");
-        layout.addComponent(table);
-
-        for (int i = 0; i < 15; i++) {
-            table.addContainerProperty("Column " + i, String.class, null);
-        }
-
-        for (int i = 0; i < 60; i++) {
-            table.addItem();
-        }
-
-        Button lessItems = new Button("Less items", new Button.ClickListener() {
-
-            @Override
-            public void buttonClick(Button.ClickEvent event) {
-                table.removeAllItems();
-                for (int i = 0; i < 5; i++) {
-                    table.addItem();
-                }
-            }
-        });
-        lessItems.setId("lessitems");
-
-        Button moreItems = new Button("More items", new Button.ClickListener() {
-
-            @Override
-            public void buttonClick(Button.ClickEvent event) {
-                table.removeAllItems();
-                for (int i = 0; i < 50; i++) {
-                    table.addItem();
-                }
-            }
-        });
-        moreItems.setId("moreitems");
-
-        Button clearItems = new Button("Clear all", new Button.ClickListener() {
-            @Override
-            public void buttonClick(ClickEvent event) {
-                table.removeAllItems();
-            }
-        });
-
-        HorizontalLayout buttonLayout = new HorizontalLayout();
-        buttonLayout.setSpacing(true);
-        layout.addComponent(buttonLayout);
-
-        buttonLayout.addComponent(lessItems);
-        buttonLayout.addComponent(moreItems);
-        buttonLayout.addComponent(clearItems);
-        clearItems.setId("clearitems");
-    }
-
-    @Override
-    protected String getTestDescription() {
-        return "Horizontal scrolling position should not be lost if amount of items changes in Table.";
-    }
-
-    @Override
-    protected Integer getTicketNumber() {
-        return 12652;
-    }
-
-}