From 0961a83d3e6f9c2349bc19e2bac09d1e8623d335 Mon Sep 17 00:00:00 2001 From: Martin Jobst Date: Mon, 3 Aug 2026 14:51:38 +0200 Subject: [PATCH 1/2] Dispose SourceViewerDecorationSupport in QuickSearchDialog The QuickSearchDialog did not dispose the SourceViewerDecorationSupport created in createViewerDecorations(), leading to a resource leak. This disposes SourceViewerDecorationSupport in the dispose listener of the dialog. Furthermore, most resources were only disposed in close(), but not in the separate dispose listener, which could also lead to a resource leak when closing the dialog abnormally, such as when disposing the Shell. This also moves the other cleanup code from close() to the dispose listener. --- .../internal/ui/QuickSearchDialog.java | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java b/bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java index 76eb609ad32..37bd96a6d5c 100644 --- a/bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java +++ b/bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java @@ -384,6 +384,7 @@ public void update(ViewerCell cell) { private SourceViewer viewer; private LineNumberRulerColumn lineNumberColumn; + private SourceViewerDecorationSupport sourceViewerDecorationSupport; private FixedLineHighlighter targetLineHighlighter; private final IPropertyChangeListener preferenceChangeListener = this::handlePropertyChangeEvent; @@ -561,26 +562,7 @@ public void run() { */ @Override public boolean close() { - this.progressJob.cancel(); - this.progressJob = null; -// this.refreshProgressMessageJob.cancel(); - if (showViewHandler != null) { - IHandlerService service = PlatformUI - .getWorkbench().getService(IHandlerService.class); - service.deactivateHandler(showViewHandler); - showViewHandler.getHandler().dispose(); - showViewHandler = null; - } - if (menuManager != null) { - menuManager.dispose(); - } - if (contextMenuManager != null) { - contextMenuManager.dispose(); - } storeDialog(getDialogSettings()); - if (searcher!=null) { - searcher.cancel(); - } return super.close(); } @@ -1015,6 +997,32 @@ private Composite createNestedComposite(Composite parent, int numRows, boolean e } protected void dispose() { + if (progressJob != null) { + progressJob.cancel(); + progressJob = null; + } + if (showViewHandler != null) { + IHandlerService service = PlatformUI.getWorkbench().getService(IHandlerService.class); + service.deactivateHandler(showViewHandler); + showViewHandler.getHandler().dispose(); + showViewHandler = null; + } + if (menuManager != null) { + menuManager.dispose(); + menuManager = null; + } + if (contextMenuManager != null) { + contextMenuManager.dispose(); + contextMenuManager = null; + } + if (searcher != null) { + searcher.cancel(); + searcher = null; + } + if (sourceViewerDecorationSupport != null) { + sourceViewerDecorationSupport.dispose(); + sourceViewerDecorationSupport = null; + } if (blankImage!=null) { blankImage.dispose(); blankImage = null; @@ -1086,7 +1094,7 @@ private void createViewerDecorations() { lineNumberColumn.setForeground(getLineNumbersColor()); viewer.addVerticalRulerColumn(lineNumberColumn); - var sourceViewerDecorationSupport = new SourceViewerDecorationSupport(viewer, null, null, EditorsUI.getSharedTextColors()); + sourceViewerDecorationSupport = new SourceViewerDecorationSupport(viewer, null, null, EditorsUI.getSharedTextColors()); sourceViewerDecorationSupport.setCursorLinePainterPreferenceKeys(EDITOR_CURRENT_LINE, EDITOR_CURRENT_LINE_COLOR); sourceViewerDecorationSupport.install(EditorsUI.getPreferenceStore()); targetLineHighlighter = new FixedLineHighlighter(); From 66b9e7c10c64a485025252ef5ee3a824556c7992 Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Mon, 3 Aug 2026 13:19:46 +0000 Subject: [PATCH 2/2] Version bump(s) for 4.41 stream --- bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF b/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF index c81a6829029..9bbeb36695d 100644 --- a/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.text.quicksearch/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.text.quicksearch;singleton:=true -Bundle-Version: 1.3.500.qualifier +Bundle-Version: 1.3.600.qualifier Bundle-Activator: org.eclipse.text.quicksearch.internal.ui.QuickSearchActivator Require-Bundle: org.eclipse.ui;bundle-version="[3.113.0,4.0.0)", org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)",