summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authormtzukanov <mtzukanov@vaadin.com>2015-10-22 13:52:39 +0300
committerJohannes Dahlström <johannesd@vaadin.com>2015-10-29 11:56:45 +0000
commit6ed91a94302900e89b1de9b54d0561701af49a0c (patch)
tree2e46b0d1271e95ff84fffa75d84a6de1c54a424c /client
parent5ea93a227f4ca7f33d9235f0bd4ca3e51ea44664 (diff)
downloadvaadin-framework-6ed91a94302900e89b1de9b54d0561701af49a0c.tar.gz
vaadin-framework-6ed91a94302900e89b1de9b54d0561701af49a0c.zip
Fixes column header drop indicator (#18925)
Calculation of the frozen column width was wrong in multiselect mode. It did not take into account the last frozen column, but added the select column twice. The same problem was in AutoScroller (as the same methods were copy-pasted there), for which reason the autoscrolling was not scrolling till the end. This patch fixes the calculation error and removes copy-pasted code, reusing the same code in both places. Change-Id: I164e2fc96688088b620ad8785c533c593723f83e
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/widget/grid/AutoScroller.java23
-rw-r--r--client/src/com/vaadin/client/widgets/Grid.java29
2 files changed, 19 insertions, 33 deletions
diff --git a/client/src/com/vaadin/client/widget/grid/AutoScroller.java b/client/src/com/vaadin/client/widget/grid/AutoScroller.java
index 90d206d98b..9cc238ac15 100644
--- a/client/src/com/vaadin/client/widget/grid/AutoScroller.java
+++ b/client/src/com/vaadin/client/widget/grid/AutoScroller.java
@@ -610,22 +610,25 @@ public class AutoScroller {
}
}
- private double getFrozenColumnsWidth() {
- double value = getMultiSelectColumnWidth();
- for (int i = 0; i < grid.getFrozenColumnCount(); i++) {
+ public double getFrozenColumnsWidth() {
+ double value = 0;
+
+ for (int i = 0; i < getRealFrozenColumnCount(); i++) {
value += grid.getColumn(i).getWidthActual();
}
+
return value;
}
- private double getMultiSelectColumnWidth() {
- if (grid.getFrozenColumnCount() >= 0
- && grid.getSelectionModel().getSelectionColumnRenderer() != null) {
- // frozen checkbox column is present
- return getTheadElement().getFirstChildElement()
- .getFirstChildElement().getOffsetWidth();
+ private int getRealFrozenColumnCount() {
+ if (grid.getFrozenColumnCount() < 0) {
+ return 0;
+ } else if (grid.getSelectionModel().getSelectionColumnRenderer() != null) {
+ // includes the selection column
+ return grid.getFrozenColumnCount() + 1;
+ } else {
+ return grid.getFrozenColumnCount();
}
- return 0.0;
}
private double getMaxScrollLeft() {
diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java
index ccc909465f..a77499e41f 100644
--- a/client/src/com/vaadin/client/widgets/Grid.java
+++ b/client/src/com/vaadin/client/widgets/Grid.java
@@ -4113,7 +4113,8 @@ public class Grid<T> extends ResizeComposite implements
dropMarkerLeft += autoScrollX;
- final double frozenColumnsWidth = getFrozenColumnsWidth();
+ final double frozenColumnsWidth = autoScroller
+ .getFrozenColumnsWidth();
final double rightBoundaryForDrag = getSidebarBoundaryComparedTo(dropMarkerLeft);
final int visibleColumns = getVisibleColumns().size();
@@ -4156,7 +4157,8 @@ public class Grid<T> extends ResizeComposite implements
.min(sidebarBoundary, gridBoundary);
// Do not show on left of the frozen columns (even if scrolled)
- final int frozenColumnsWidth = (int) getFrozenColumnsWidth();
+ final int frozenColumnsWidth = (int) autoScroller
+ .getFrozenColumnsWidth();
left = Math.max(frozenColumnsWidth, Math.min(left, rightBoundary));
@@ -4317,25 +4319,6 @@ public class Grid<T> extends ResizeComposite implements
autoScroller.stop();
}
- private double getFrozenColumnsWidth() {
- double value = getMultiSelectColumnWidth();
- for (int i = 0; i < getFrozenColumnCount(); i++) {
- value += getColumn(i).getWidthActual();
- }
- return value;
- }
-
- private double getMultiSelectColumnWidth() {
- if (getSelectionModel().getSelectionColumnRenderer() != null) {
- // frozen checkbox column is present, it is always the first
- // column
- return escalator.getHeader().getElement()
- .getFirstChildElement().getFirstChildElement()
- .getOffsetWidth();
- }
- return 0.0;
- }
-
/**
* Returns the amount of frozen columns. The selection column is always
* considered frozen, since it can't be moved.
@@ -4436,7 +4419,7 @@ public class Grid<T> extends ResizeComposite implements
return;
}
- double position = getFrozenColumnsWidth();
+ double position = autoScroller.getFrozenColumnsWidth();
// iterate column indices and add possible drop positions
for (int i = frozenColumns; i < getColumnCount(); i++) {
Column<?, T> column = getColumn(i);
@@ -8714,4 +8697,4 @@ public class Grid<T> extends ResizeComposite implements
}
return null;
}
-}
+} \ No newline at end of file