Reviewers: jlabanca, minz,

Description:
There was a focus issue with the fasttree when the size of the tree was
larger than the viewport, this was especially manifested with very large
trees.

Please review this at http://gwt-code-reviews.appspot.com/18801

Affected files:
   com/google/gwt/gen2/complexpanel/client/FastTree.java


Index: com/google/gwt/gen2/complexpanel/client/FastTree.java
===================================================================
--- com/google/gwt/gen2/complexpanel/client/FastTree.java       (revision 1594)
+++ com/google/gwt/gen2/complexpanel/client/FastTree.java       (working copy)
@@ -53,6 +53,7 @@
  import com.google.gwt.user.client.DOM;
  import com.google.gwt.user.client.Element;
  import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.Window;
  import com.google.gwt.user.client.ui.Accessibility;
  import com.google.gwt.user.client.ui.Focusable;
  import com.google.gwt.user.client.ui.Panel;
@@ -849,15 +850,26 @@
    }

    private void moveElementOverTarget(Element movable, Element target) {
-    int containerTop = getAbsoluteTop();
-
-    int top = DOM.getAbsoluteTop(target) - containerTop;
+    int top = DOM.getAbsoluteTop(target);
      int height = DOM.getElementPropertyInt(target, "offsetHeight");
+    int left = DOM.getAbsoluteLeft(target) + getAbsoluteLeft();
+    int width = DOM.getElementPropertyInt(target, "offsetWidth");
+
+    int maxBottom = Window.getScrollTop() + Window.getClientHeight();

+    if (top + target.getOffsetHeight() > maxBottom) {
+      top = maxBottom - target.getOffsetHeight();
+    }
+
      // Set the element's position and size to exactly underlap the
      // item's content element.
      DOM.setStyleAttribute(movable, "height", height + "px");
-    DOM.setStyleAttribute(movable, "top", top + "px");
+
+    if (top > 0) {
+      DOM.setStyleAttribute(movable, "top", top + "px");
+    }
+    DOM.setStyleAttribute(movable, "left", left + "px");
+    DOM.setStyleAttribute(movable, "width", width + "px");
    }

    /**



--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to