diff options
author | Rüdiger Herrmann | 2016-10-24 21:22:28 +0000 |
---|---|---|
committer | Andrey Loskutov | 2016-11-05 21:46:58 +0000 |
commit | 1c1763096e31aaccc4444dc78cbfb3cbc6979d03 (patch) | |
tree | 077a77d40020d6f06318325858c42c9518b24480 | |
parent | c54a6055d460951ecdbcf51eaba19c346370a783 (diff) | |
download | eclipse.platform.text-1c1763096e31aaccc4444dc78cbfb3cbc6979d03.tar.gz eclipse.platform.text-1c1763096e31aaccc4444dc78cbfb3cbc6979d03.tar.xz eclipse.platform.text-1c1763096e31aaccc4444dc78cbfb3cbc6979d03.zip |
Bug 506427 - Insufficient is-disposed check in LineNumberRulerColumn::redraw
Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de>
Change-Id: I0ef8ae88f5612cb0c7302bbe37df9836f5f22d27
5 files changed, 58 insertions, 3 deletions
diff --git a/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF b/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF index 3fdcd1f4095..9cc06255083 100644 --- a/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Plugin.name Bundle-SymbolicName: org.eclipse.jface.text.tests -Bundle-Version: 3.11.0.qualifier +Bundle-Version: 3.11.100.qualifier Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin Export-Package: diff --git a/org.eclipse.jface.text.tests/pom.xml b/org.eclipse.jface.text.tests/pom.xml index 99b043b602a..0e785af231f 100644 --- a/org.eclipse.jface.text.tests/pom.xml +++ b/org.eclipse.jface.text.tests/pom.xml @@ -19,7 +19,7 @@ </parent> <groupId>org.eclipse.jface</groupId> <artifactId>org.eclipse.jface.text.tests</artifactId> - <version>3.11.0-SNAPSHOT</version> + <version>3.11.100-SNAPSHOT</version> <packaging>eclipse-test-plugin</packaging> <properties> <testSuite>${project.artifactId}</testSuite> diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/source/LineNumberRulerColumnTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/source/LineNumberRulerColumnTest.java new file mode 100644 index 00000000000..c3faa2fc3f7 --- /dev/null +++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/source/LineNumberRulerColumnTest.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2016 Rüdiger Herrmann 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: + * Rüdiger Herrmann - Insufficient is-disposed check in LineNumberRulerColumn::redraw - https://bugs.eclipse.org/bugs/show_bug.cgi?id=506427 + *******************************************************************************/ +package org.eclipse.jface.text.source; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Shell; + +public class LineNumberRulerColumnTest { + + private Shell fParent; + + @Before + public void setUp() { + fParent= new Shell(); + } + + @After + public void tearDown() { + fParent.dispose(); + } + + @Test + public void testRedrawAfterDispose() { + LineNumberRulerColumn lineNumberRulerColumn= new LineNumberRulerColumn(); + CompositeRuler ruler= new CompositeRuler(); + ruler.addDecorator(0, lineNumberRulerColumn); + SourceViewer sourceViewer= new SourceViewer(fParent, ruler, SWT.NONE); + lineNumberRulerColumn.getControl().setSize(10, 10); + + sourceViewer.getTextWidget().dispose(); + + lineNumberRulerColumn.redraw(); + } + +} diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/JFaceTextTestSuite.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/JFaceTextTestSuite.java index b8a47db3250..35febd98fad 100644 --- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/JFaceTextTestSuite.java +++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/JFaceTextTestSuite.java @@ -14,6 +14,7 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; +import org.eclipse.jface.text.source.LineNumberRulerColumnTest; import org.eclipse.jface.text.tests.reconciler.AbstractReconcilerTest; import org.eclipse.jface.text.tests.rules.DefaultPartitionerTest; import org.eclipse.jface.text.tests.rules.DefaultPartitionerZeroLengthTest; @@ -29,6 +30,7 @@ import org.eclipse.jface.text.tests.rules.WordRuleTest; */ @RunWith(Suite.class) @SuiteClasses({ + LineNumberRulerColumnTest.class, HTML2TextReaderTest.class, TextHoverPopupTest.class, TextPresentationTest.class, diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java index 384dfc3a7c3..2d944d157de 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java @@ -10,6 +10,7 @@ * Nikolay Botev <bono8106@hotmail.com> - [rulers] Shift clicking in line number column doesn't select range - https://bugs.eclipse.org/bugs/show_bug.cgi?id=32166 * Nikolay Botev <bono8106@hotmail.com> - [rulers] Clicking in line number ruler should not trigger annotation ruler - https://bugs.eclipse.org/bugs/show_bug.cgi?id=40889 * Florian Weßling <flo@cdhq.de> - [rulers] Line numbering was wrong when word wrap was active - https://bugs.eclipse.org/bugs/show_bug.cgi?id=35779 + * Rüdiger Herrmann - Insufficient is-disposed check in LineNumberRulerColumn::redraw - https://bugs.eclipse.org/bugs/show_bug.cgi?id=506427 *******************************************************************************/ package org.eclipse.jface.text.source; @@ -872,7 +873,7 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn { return; } - if (fCachedTextViewer != null && fCanvas != null && !fCanvas.isDisposed()) { + if (!isDisposed()) { if (VerticalRuler.AVOID_NEW_GC) { fCanvas.redraw(); fCanvas.update(); @@ -884,6 +885,11 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn { } } + private boolean isDisposed() { + return fCachedTextViewer == null || fCanvas == null || fCanvas.isDisposed() + || fCachedTextViewer.getTextWidget() == null; + } + @Override public void setModel(IAnnotationModel model) { } |