Bug 504915 - Freeze in scrolled state puts non-frozen region in scrolled
state
Change-Id: Idb06d5c603c5d278d1b7956b3a20b2e86893e057
Signed-off-by: Dirk Fauth <dirk.fauth@googlemail.com>
diff --git a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/freeze/command/FreezeHandlerTest.java b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/freeze/command/FreezeHandlerTest.java
index 5d49204..f638b11 100644
--- a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/freeze/command/FreezeHandlerTest.java
+++ b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/freeze/command/FreezeHandlerTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2013 Original authors and others.
+ * Copyright (c) 2012, 2016 Original authors and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -139,7 +139,7 @@
// Test viewport
Assert.assertEquals(3, this.viewportLayer.getMinimumOriginColumnPosition());
Assert.assertEquals(3, this.viewportLayer.getMinimumOriginRowPosition());
- Assert.assertEquals(4, this.viewportLayer.getColumnIndexByPosition(0));
+ Assert.assertEquals(3, this.viewportLayer.getColumnIndexByPosition(0));
}
@Test
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
index 2e3fcef..c091453 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/freeze/FreezeHelper.java
@@ -1,12 +1,12 @@
/*******************************************************************************
- * Copyright (c) 2012, 2013 Dirk Fauth and others.
+ * Copyright (c) 2012, 2016 Dirk Fauth and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Dirk Fauth <dirk.fauth@gmail.com> - initial API and implementation
+ * Dirk Fauth <dirk.fauth@googlemail.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.nebula.widgets.nattable.freeze;
@@ -33,9 +33,6 @@
* @see FreezePositionCommand
* @see FreezeSelectionCommand
* @see UnFreezeGridCommand
- *
- * @author Dirk Fauth
- *
*/
public class FreezeHelper {
@@ -58,8 +55,10 @@
* @see FreezePositionCommand
* @see FreezeSelectionCommand
*/
- public static void freeze(FreezeLayer freezeLayer,
- ViewportLayer viewportLayer, PositionCoordinate topLeftPosition,
+ public static void freeze(
+ FreezeLayer freezeLayer,
+ ViewportLayer viewportLayer,
+ PositionCoordinate topLeftPosition,
PositionCoordinate bottomRightPosition) {
if (freezeLayer == null || viewportLayer == null) {
@@ -67,23 +66,21 @@
}
if (topLeftPosition != null && bottomRightPosition != null) {
- freezeLayer.setTopLeftPosition(topLeftPosition.columnPosition,
+ freezeLayer.setTopLeftPosition(
+ topLeftPosition.columnPosition,
topLeftPosition.rowPosition);
freezeLayer.setBottomRightPosition(
bottomRightPosition.columnPosition,
bottomRightPosition.rowPosition);
- IUniqueIndexLayer scrollableLayer = viewportLayer
- .getScrollableLayer();
- int originX = bottomRightPosition.columnPosition == scrollableLayer
- .getColumnCount() - 1 ? scrollableLayer.getWidth()
- : scrollableLayer
- .getStartXOfColumnPosition(bottomRightPosition.columnPosition + 1);
- int originY = bottomRightPosition.rowPosition == scrollableLayer
- .getRowCount() - 1 ? scrollableLayer.getHeight()
- : scrollableLayer
- .getStartYOfRowPosition(bottomRightPosition.rowPosition + 1);
+ IUniqueIndexLayer scrollableLayer = viewportLayer.getScrollableLayer();
+ int originX = (bottomRightPosition.columnPosition == scrollableLayer.getColumnCount() - 1)
+ ? scrollableLayer.getWidth() : scrollableLayer.getStartXOfColumnPosition(bottomRightPosition.columnPosition + 1);
+ int originY = (bottomRightPosition.rowPosition == scrollableLayer.getRowCount() - 1)
+ ? scrollableLayer.getHeight() : scrollableLayer.getStartYOfRowPosition(bottomRightPosition.rowPosition + 1);
viewportLayer.setMinimumOrigin(originX, originY);
+ viewportLayer.setOriginX(0);
+ viewportLayer.setOriginY(0);
viewportLayer.fireLayerEvent(new FreezeEvent(viewportLayer));
}
}
@@ -100,8 +97,7 @@
*
* @see UnFreezeGridCommand
*/
- public static void unfreeze(FreezeLayer freezeLayer,
- ViewportLayer viewportLayer) {
+ public static void unfreeze(FreezeLayer freezeLayer, ViewportLayer viewportLayer) {
if (freezeLayer == null || viewportLayer == null) {
throw new IllegalArgumentException("freezeLayer and viewportLayer can not be null!"); //$NON-NLS-1$
}
@@ -123,13 +119,10 @@
* @param viewportLayer
* The ViewportLayer of the grid to perform the freeze action.
*/
- public static void resetViewport(FreezeLayer freezeLayer,
- ViewportLayer viewportLayer) {
+ public static void resetViewport(FreezeLayer freezeLayer, ViewportLayer viewportLayer) {
PositionCoordinate topLeftPosition = freezeLayer.getTopLeftPosition();
viewportLayer.resetOrigin(
- viewportLayer.getScrollableLayer().getStartXOfColumnPosition(
- Math.max(0, topLeftPosition.columnPosition)),
- viewportLayer.getScrollableLayer().getStartYOfRowPosition(
- Math.max(0, topLeftPosition.rowPosition)));
+ viewportLayer.getScrollableLayer().getStartXOfColumnPosition(Math.max(0, topLeftPosition.columnPosition)),
+ viewportLayer.getScrollableLayer().getStartYOfRowPosition(Math.max(0, topLeftPosition.rowPosition)));
}
}