diff options
author | Dirk Fauth | 2017-11-20 18:32:22 +0000 |
---|---|---|
committer | Dirk Fauth | 2017-11-20 18:32:22 +0000 |
commit | bfd90eacf838561a98de651d3ab208657a7c7e9f (patch) | |
tree | a15a93d83ed3102b078584a0ae102f9c772bfebe | |
parent | 3be9f4125ffcc06a4f4081b675874439b021ed58 (diff) | |
download | org.eclipse.nebula.widgets.nattable-bfd90eacf838561a98de651d3ab208657a7c7e9f.tar.gz org.eclipse.nebula.widgets.nattable-bfd90eacf838561a98de651d3ab208657a7c7e9f.tar.xz org.eclipse.nebula.widgets.nattable-bfd90eacf838561a98de651d3ab208657a7c7e9f.zip |
Bug 525551 - SizeConfig does not invalidate cache when DPI converter is
set
Change-Id: Ic141ba048bcf592585fc04958dfc5cc50c7725b9
Signed-off-by: Dirk Fauth <dirk.fauth@googlemail.com>
2 files changed, 30 insertions, 0 deletions
diff --git a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfigTest.java b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfigTest.java index 6c287675..b8434af7 100644 --- a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfigTest.java +++ b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfigTest.java @@ -140,4 +140,33 @@ public class SizeConfigTest { assertEquals(50, sc.getSize(3)); assertTrue(sc.isPositionResizable(2)); } + + @Test + public void testAggregateSizeWithScaling() { + SizeConfig sc = new SizeConfig(100); + + // set some specific sizes to avoid that sc.isAllPositionsSameSize + // does not return true and aggregate values are not determined + sc.setSize(0, 50); + sc.setSize(1, 50); + + int nCols = 20; + + // cache the initial aggregate sizes of last and second last column. + // this is done when the DataLayer is initialized + int cachedAggregateSize = sc.getAggregateSize(nCols - 1); + + // this is done when the NatTable itself is initialized + sc.setDpiConverter(new AbstractDpiConverter() { + @Override + protected void readDpiFromDisplay() { + // programatically set a dpi > 96 + this.dpi = (int) (96 * 1.25); + } + }); + + int aggregateSize = sc.getAggregateSize(nCols - 1); + + assertTrue("aggregate size of last column is same as cached aggregate size", aggregateSize != cachedAggregateSize); + } } diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java index 81fb0cc1..11dee53b 100644 --- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java +++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/layer/SizeConfig.java @@ -1118,6 +1118,7 @@ public class SizeConfig implements IPersistable { */ public void setDpiConverter(IDpiConverter dpiConverter) { this.dpiConverter = dpiConverter; + this.isAggregatedSizeCacheValid = false; } /** |