Skip to content

Commit ee2815f

Browse files
committed
Use new SWT Display.setDarkThemePreferred() API for dark theme
Replace platform-specific dark theme processors (Win32, GTK, Cocoa) with the new cross-platform SWT API Display.setDarkThemePreferred(boolean). The ThemeEngine now calls display.setDarkThemePreferred() directly when a theme is set, signaling the dark mode preference to the OS for native components like title bars, scrollbars, and native dialogs. In IDEApplication, the manual dark styling (hardcoded colors, SWT.Show listeners, recursive style application) is replaced with a single call to display.setDarkThemePreferred(true) during early startup. Dark theme processor code removed from: - org.eclipse.e4.ui.swt.win32 (DarkThemeProcessor using OS.setTheme) - org.eclipse.e4.ui.swt.gtk (DarkThemeProcessor using OS.setDarkThemePreferred) - org.eclipse.e4.ui.workbench.renderers.swt.cocoa (CocoaDarkThemeProcessor using OS.setTheme) The bundles themselves are kept for later retirement. Fixes #3857
1 parent 1375cd4 commit ee2815f

File tree

12 files changed

+34
-217
lines changed

12 files changed

+34
-217
lines changed

bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Bundle-Name: %pluginName
66
Bundle-Vendor: %providerName
77
Bundle-Localization: plugin
88
Bundle-RequiredExecutionEnvironment: JavaSE-21
9-
Require-Bundle: org.eclipse.swt;bundle-version="[3.133.0,4.0.0)",
9+
Require-Bundle: org.eclipse.swt;bundle-version="[3.134.0,4.0.0)",
1010
org.eclipse.e4.ui.css.swt;bundle-version="0.13.100",
1111
org.eclipse.e4.ui.css.core;bundle-version="0.12.200",
1212
org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"

bundles/org.eclipse.e4.ui.css.swt.theme/src/org/eclipse/e4/ui/css/swt/internal/theme/ThemeEngine.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,9 @@ public void setTheme(ITheme theme, boolean restore, boolean force) {
510510
ThemeEngineManager.logError(e.getMessage(), e);
511511
}
512512
}
513+
boolean isDark = theme.getId().contains("dark"); //$NON-NLS-1$
514+
display.setDarkThemePreferred(isDark);
515+
513516
sendThemeChangeEvent(restore);
514517

515518
for (CSSEngine engine : cssEngines) {

bundles/org.eclipse.e4.ui.swt.gtk/META-INF/MANIFEST.MF

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17
88
Bundle-Localization: fragment-gtk
99
Bundle-Vendor: %providerName
1010
Eclipse-PlatformFilter: (osgi.ws=gtk)
11-
Import-Package: jakarta.annotation;version="[2.1.0,3.0.0)",
12-
jakarta.inject;version="[2.0.0,3.0.0)",
13-
org.eclipse.e4.core.services.events,
14-
org.osgi.service.event;version="1.3.1"
1511
Automatic-Module-Name: org.eclipse.e4.ui.swt.gtk
Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<?eclipse version="3.4"?>
33
<fragment>
4-
<extension id="org.eclipse.e4.ui.swt.gtk.processor"
5-
point="org.eclipse.e4.workbench.model">
6-
<processor
7-
apply="always"
8-
beforefragment="true"
9-
class="org.eclipse.e4.ui.swt.internal.gtk.DarkThemeProcessor">
10-
</processor>
11-
</extension>
124

135
</fragment>

bundles/org.eclipse.e4.ui.swt.gtk/src/org/eclipse/e4/ui/swt/internal/gtk/DarkThemeProcessor.java

Lines changed: 0 additions & 60 deletions
This file was deleted.

bundles/org.eclipse.e4.ui.swt.win32/META-INF/MANIFEST.MF

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17
88
Bundle-Localization: fragment-win32
99
Bundle-Vendor: %providerName
1010
Eclipse-PlatformFilter: (osgi.ws=win32)
11-
Import-Package: jakarta.annotation;version="[2.1.0,3.0.0)",
12-
jakarta.inject;version="[2.0.0,3.0.0)",
13-
org.eclipse.e4.core.services.events,
14-
org.osgi.service.event;version="[1.3.0,2.0.0)"
1511
Automatic-Module-Name: org.eclipse.e4.ui.swt.win32
Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<?eclipse version="3.4"?>
33
<fragment>
4-
<extension id="org.eclipse.e4.ui.swt.win32.processor"
5-
point="org.eclipse.e4.workbench.model">
6-
<processor
7-
apply="always"
8-
beforefragment="true"
9-
class="org.eclipse.e4.ui.swt.internal.win32.DarkThemeProcessor">
10-
</processor>
11-
</extension>
124

135
</fragment>

bundles/org.eclipse.e4.ui.swt.win32/src/org/eclipse/e4/ui/swt/internal/win32/DarkThemeProcessor.java

Lines changed: 0 additions & 55 deletions
This file was deleted.

bundles/org.eclipse.e4.ui.workbench.renderers.swt.cocoa/META-INF/MANIFEST.MF

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ Bundle-Version: 0.14.600.qualifier
66
Bundle-Name: %fragmentName
77
Bundle-Vendor: %providerName
88
Fragment-Host: org.eclipse.e4.ui.workbench.renderers.swt;bundle-version="[0.10.0,1.0.0)"
9-
Require-Bundle: org.eclipse.e4.ui.css.swt.theme
109
Bundle-Localization: fragment-cocoa
1110
Bundle-RequiredExecutionEnvironment: JavaSE-17
1211
Export-Package: org.eclipse.e4.ui.workbench.renderers.swt.cocoa;x-internal:=true

bundles/org.eclipse.e4.ui.workbench.renderers.swt.cocoa/fragment.xml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,5 @@
1111
class="org.eclipse.e4.ui.workbench.renderers.swt.cocoa.CocoaUIProcessor">
1212
</processor>
1313
</extension>
14-
<extension
15-
id="CocoaDarkThemeProcessor"
16-
name="Cocoa Dark Theme Processor"
17-
point="org.eclipse.e4.workbench.model">
18-
<processor
19-
apply="always"
20-
beforefragment="false"
21-
class="org.eclipse.e4.ui.swt.internal.cocoa.CocoaDarkThemeProcessor">
22-
</processor>
23-
</extension>
2414

2515
</fragment>

0 commit comments

Comments
 (0)