@Override public void widgetDisposed(DisposeEvent e) { handleDispose(); fCachedTextViewer= null; fCachedTextWidget= null; } });
@Override public Control createControl(CompositeRuler parentRuler, Composite parentControl) { fParentRuler= parentRuler; fCachedTextViewer= parentRuler.getTextViewer(); fCachedTextWidget= fCachedTextViewer.getTextWidget(); fCanvas= new Canvas(parentControl, SWT.NONE); fCanvas.setBackground(getBackground()); fCanvas.addPaintListener(event -> { if (fCachedTextViewer != null) doubleBufferPaint(event.gc); }); fCanvas.addDisposeListener(e -> { handleDispose(); fCachedTextViewer= null; fCachedTextWidget= null; }); fCanvas.addMouseListener(fMouseHandler); fCanvas.addMouseMoveListener(fMouseHandler); if (fCachedTextViewer != null) { fCachedTextViewer.addViewportListener(fInternalListener); fCachedTextViewer.addTextListener(fInternalListener); } fRevisionPainter.setParentRuler(parentRuler); fDiffPainter.setParentRuler(parentRuler); return fCanvas; }