diff --git a/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/AbstractTextCanvasModel.java b/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/AbstractTextCanvasModel.java index 4a49952cd42..0bdc0cfd617 100644 --- a/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/AbstractTextCanvasModel.java +++ b/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/AbstractTextCanvasModel.java @@ -35,6 +35,10 @@ abstract public class AbstractTextCanvasModel implements ITextCanvasModel { private ITerminalTextDataSnapshot fSelectionSnapshot; private String fCurrentSelection=""; //$NON-NLS-1$ private final Point fSelectionAnchor=new Point(0,0); + /** + * do not update while update is running + */ + boolean fInUpdate; public AbstractTextCanvasModel(ITerminalTextDataSnapshot snapshot) { fSnapshot=snapshot; @@ -75,22 +79,28 @@ abstract public class AbstractTextCanvasModel implements ITextCanvasModel { return fSnapshot; } protected void updateSnapshot() { - if(fSnapshot.isOutOfDate()) { - fSnapshot.updateSnapshot(false); - if(fSnapshot.hasTerminalChanged()) - fireTerminalDataChanged(); - // TODO why does hasDimensionsChanged not work?????? - // if(fSnapshot.hasDimensionsChanged()) - // fireDimensionsChanged(); - if(fLines!=fSnapshot.getHeight()) { - fireDimensionsChanged(fSnapshot.getWidth(),fSnapshot.getHeight()); - fLines=fSnapshot.getHeight(); - } - int y=fSnapshot.getFirstChangedLine(); - // has any line changed? - if(y