From d6a1501abae2b08f9e84f48843b6b00c38906c5c Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Wed, 22 Apr 2026 11:53:42 +0200 Subject: [PATCH 1/3] Read splash shell title directly from the product in IDEApplication IDEApplication.start set the splash shell's taskbar title via ChooseWorkspaceDialog.getWindowTitle(). That helper is scoped to the workspace chooser dialog: it returns Platform.getProduct().getName(), and falls back to an IDEWorkbenchMessages string whose name (ChooseWorkspaceDialog_defaultProductName) is tied to the chooser dialog's presentation. Using it for the splash shell is a layering inversion. The splash is a property of the application, not of the chooser dialog, and the dialog-specific NLS fallback is not appropriate for the splash taskbar entry. Read Platform.getProduct().getName() directly in IDEApplication. If no product is configured, leave the launcher's default title in place rather than substituting a chooser-dialog placeholder. ChooseWorkspaceDialog.getWindowTitle() is retained as an internal helper for the dialog itself. No user-visible change for Eclipse IDE products, which always have a product name configured. --- .../ui/internal/ide/application/IDEApplication.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java index de23bc55674..a38585301ab 100644 --- a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java +++ b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java @@ -165,11 +165,13 @@ public Object start(IApplicationContext appContext) throws Exception { // look and see if there's a splash shell we can parent off of Shell shell = WorkbenchPlugin.getSplashShell(display); if (shell != null) { - // should should set the icon and message for this shell to be the - // same as the chooser dialog - this will be the guy that lives in - // the task bar and without these calls you'd have the default icon - // with no message. - shell.setText(ChooseWorkspaceDialog.getWindowTitle()); + // Set the taskbar title and icon for the splash shell. The title + // is taken from the configured product; if no product is set, the + // launcher's default title is kept. + IProduct product = Platform.getProduct(); + if (product != null && product.getName() != null) { + shell.setText(product.getName()); + } shell.setImages(Window.getDefaultImages()); } From a441844419f552e816a64d74480451607456cc29 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Thu, 23 Apr 2026 07:29:28 +0200 Subject: [PATCH 2/3] Use ILog.of(Class).error in IDEApplication version-file logger Replaces the cross-bundle call to org.eclipse.ui.internal.ide.StatusUtil .newError(...) in IDEApplication#writeVersion with ILog.of(IDEApplication .class).error(message, throwable), and drops the now-unused StatusUtil import. Behavior changes: - Plug-in id moves from "org.eclipse.ui.ide" (IDE_WORKBENCH constant in the called StatusUtil) to "org.eclipse.ui.ide.application", which is the bundle that actually emits the version-file write failure. - The previous IDEWorkbenchPlugin.log(message, status) helper emitted two separate log entries (one for the message, one for the status); this now produces a single coherent entry whose status carries both the context message and the throwable, removing the dependency on the potentially-null e.getLocalizedMessage(). --- .../eclipse/ui/internal/ide/application/IDEApplication.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java index a38585301ab..be179fdc56c 100644 --- a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java +++ b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java @@ -36,6 +36,7 @@ import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExecutableExtension; +import org.eclipse.core.runtime.ILog; import org.eclipse.core.runtime.IProduct; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.OperationCanceledException; @@ -74,7 +75,6 @@ import org.eclipse.ui.internal.ide.IDEInternalPreferences; import org.eclipse.ui.internal.ide.IDEWorkbenchMessages; import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; -import org.eclipse.ui.internal.ide.StatusUtil; import org.eclipse.ui.preferences.ScopedPreferenceStore; import org.osgi.framework.Bundle; import org.osgi.framework.Version; @@ -838,8 +838,7 @@ private static void writeWorkspaceVersion() { try (OutputStream output = new FileOutputStream(versionFile)) { props.store(output, null); } catch (IOException e) { - IDEWorkbenchPlugin.log("Could not write version file", //$NON-NLS-1$ - StatusUtil.newError(e)); + ILog.of(IDEApplication.class).error("Could not write version file", e); //$NON-NLS-1$ } } From ba64dcd4fafa199f19bd01d6eff025190e84a772 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Wed, 22 Apr 2026 20:31:34 +0200 Subject: [PATCH 3/3] PreferenceDialog: render filter as native search field Give the preference dialog's filter field the full set of search-related style bits (SWT.SEARCH | SWT.ICON_SEARCH | SWT.ICON_CANCEL) so it is rendered as a native search field with a magnifier and cancel icon. Also override setInitialText to expose the hint via Text#setMessage only, instead of stuffing it into the field's content. The dialog auto-focuses the filter field on open, so the old initial-text fallback was never actually shown as a placeholder and forced users to delete the hint before typing. --- .../internal/dialogs/FilteredPreferenceDialog.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java index ece0dac34d7..9c281e7d07d 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/FilteredPreferenceDialog.java @@ -119,6 +119,18 @@ protected class PreferenceFilteredTree extends FilteredTree { super(parent, treeStyle, filter, true, true); } + @Override + protected Text doCreateFilterText(Composite parent) { + return new Text(parent, SWT.SINGLE | SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH | SWT.ICON_CANCEL); + } + + @Override + public void setInitialText(String text) { + if (filterText != null && !filterText.isDisposed()) { + filterText.setMessage(text != null ? text : ""); //$NON-NLS-1$ + } + } + /** * Add an additional, optional filter to the viewer. If the filter text is * cleared, this filter will be removed from the TreeViewer.