diff options
author | teicher | 2005-06-02 08:58:10 +0000 |
---|---|---|
committer | teicher | 2005-06-02 08:58:10 +0000 |
commit | 7ca57d2320de548f7b4537241330f48beec138f4 (patch) | |
tree | f852fd97581c5782cb7d10de16ef5817baea2da6 /org.eclipse.ui.workbench.texteditor | |
parent | 44ecc78e88146db7fd5d536eae3ad893588ef8bb (diff) | |
download | eclipse.platform.text-7ca57d2320de548f7b4537241330f48beec138f4.tar.gz eclipse.platform.text-7ca57d2320de548f7b4537241330f48beec138f4.tar.xz eclipse.platform.text-7ca57d2320de548f7b4537241330f48beec138f4.zip |
reverting fix for 67857 [implementation] ReferenceSelectionAction can leak a quick diff provider
- fix is not complete
- no tests
- no clients
Diffstat (limited to 'org.eclipse.ui.workbench.texteditor')
-rw-r--r-- | org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/ReferenceSelectionAction.java | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/ReferenceSelectionAction.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/ReferenceSelectionAction.java index 7f6c53e1238..15764a72556 100644 --- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/ReferenceSelectionAction.java +++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/ReferenceSelectionAction.java @@ -63,17 +63,13 @@ public class ReferenceSelectionAction extends Action implements IUpdate { /** * Creates an instance of the implementation provided by the extension, if none has been created * before. Otherwise, the cached implementation is returned. - * @param cache <code>true</code> if the provider should be cached * @return The <code>IQuickDiffProviderImplementation</code> instance provided by the extension. */ - private IQuickDiffReferenceProvider getProvider(boolean cache) { - IQuickDiffReferenceProvider provider= fProvider; - if (provider == null) { - provider= fDescriptor.createProvider(); - if (cache) - fProvider= provider; + private IQuickDiffReferenceProvider getProvider() { + if (fProvider == null) { + fProvider= fDescriptor.createProvider(); } - return provider; + return fProvider; } /* @@ -87,7 +83,7 @@ public class ReferenceSelectionAction extends Action implements IUpdate { if (fEditor instanceof ITextEditorExtension3) { ITextEditorExtension3 extension= (ITextEditorExtension3) fEditor; - IQuickDiffReferenceProvider provider= getProvider(true); + IQuickDiffReferenceProvider provider= getProvider(); if (provider != null) { provider.setActiveEditor(fEditor); if (provider.isEnabled()) { @@ -121,19 +117,12 @@ public class ReferenceSelectionAction extends Action implements IUpdate { } if (fDescriptor.isPluginLoaded()) { - IQuickDiffReferenceProvider provider= getProvider(false); - if (provider == null) { + getProvider(); + if (fProvider == null) { setEnabled(false); } else { - try { - provider.setActiveEditor(fEditor); - setEnabled(provider.isEnabled()); - } finally { - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=67857 - // dispose the provider if we just created it to check enablement - if (provider != fProvider) - provider.dispose(); - } + fProvider.setActiveEditor(fEditor); + setEnabled(fProvider.isEnabled()); } } else { // optimistically enable it |