diff --git a/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/AbstractPane.java b/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/AbstractPane.java index 870a842ab89..8ae821d7de8 100644 --- a/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/AbstractPane.java +++ b/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/AbstractPane.java @@ -26,6 +26,7 @@ import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.MouseMoveListener; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontMetrics; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; @@ -639,6 +640,14 @@ public abstract class AbstractPane extends Canvas abstract protected int getCellCharacterCount(); + public void setFont(Font font) + { + super.setFont(font); + fCharacterWidth = -1; + fCellHeight = -1; + fTextHeight = -1; + } + private int fCellHeight = -1; // called often, cache protected int getCellHeight() @@ -659,7 +668,7 @@ public abstract class AbstractPane extends Canvas if(fCharacterWidth == -1) { GC gc = new GC(this); - gc.setFont(fRendering.getFont()); + gc.setFont(fRendering.getFont()); fCharacterWidth = gc.getAdvanceWidth('F'); gc.dispose(); } diff --git a/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/AddressPane.java b/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/AddressPane.java index 0d9769c2566..c6a4ae77495 100644 --- a/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/AddressPane.java +++ b/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/AddressPane.java @@ -80,14 +80,14 @@ public class AddressPane extends AbstractPane } protected int getCellWidth() - { - GC gc = new GC(this); - gc.setFont(fRendering.getFont()); - int width = gc.getAdvanceWidth('0'); + { + GC gc = new GC(this); + StringBuffer buf = new StringBuffer(); + for(int i = 0; i < getCellCharacterCount(); i++) + buf.append("0"); + int width = gc.textExtent(buf.toString()).x; gc.dispose(); - - return getCellCharacterCount() * width - + (fRendering.getCellPadding() * 2); + return width; } private int getColumnCount() diff --git a/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/DataPane.java b/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/DataPane.java index 5021c9e5002..bc3e0630c0c 100644 --- a/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/DataPane.java +++ b/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/DataPane.java @@ -241,7 +241,7 @@ public class DataPane extends AbstractPane int cellHeight = getCellHeight(); int cellWidth = getCellWidth(); - + int columns = fRendering.getColumnCount(); try diff --git a/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/Rendering.java b/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/Rendering.java index bccf6f3be40..447745f6962 100644 --- a/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/Rendering.java +++ b/plugins/org.eclipse.dd.debug.memory.renderings.traditional/src/org/eclipse/dd/debug/memory/renderings/traditional/Rendering.java @@ -462,7 +462,7 @@ public class Rendering extends Composite implements IDebugEventSetListener controls[i].setFont(font); packColumns(); - redrawPanes(); + layout(true); } public void handleDebugEvents(DebugEvent[] events)