Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2015-12-11 02:48:48 +0000
committerTom Schindl2015-12-11 02:48:48 +0000
commit52f59743825f8d0c5d7a9b54f22bd0bcdc3d0463 (patch)
treecea2831393daa5144b8deed4297ef03d213cbc08
parent0d2e2665d5d46724603268a17b550b64a433995b (diff)
downloadorg.eclipse.efxclipse-52f59743825f8d0c5d7a9b54f22bd0bcdc3d0463.tar.gz
org.eclipse.efxclipse-52f59743825f8d0c5d7a9b54f22bd0bcdc3d0463.tar.xz
org.eclipse.efxclipse-52f59743825f8d0c5d7a9b54f22bd0bcdc3d0463.zip
optimize unsetting of a theme
-rwxr-xr-xbundles/runtime/org.eclipse.fx.ui.theme/src/org/eclipse/fx/ui/theme/internal/DefaultThemeManager.java24
1 files changed, 16 insertions, 8 deletions
diff --git a/bundles/runtime/org.eclipse.fx.ui.theme/src/org/eclipse/fx/ui/theme/internal/DefaultThemeManager.java b/bundles/runtime/org.eclipse.fx.ui.theme/src/org/eclipse/fx/ui/theme/internal/DefaultThemeManager.java
index 1ffa6f653..51efba931 100755
--- a/bundles/runtime/org.eclipse.fx.ui.theme/src/org/eclipse/fx/ui/theme/internal/DefaultThemeManager.java
+++ b/bundles/runtime/org.eclipse.fx.ui.theme/src/org/eclipse/fx/ui/theme/internal/DefaultThemeManager.java
@@ -11,6 +11,7 @@
package org.eclipse.fx.ui.theme.internal;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -131,16 +132,23 @@ public class DefaultThemeManager implements ThemeManager {
private void unsetTheme(Theme theme) {
theme.getStylesheetURL().removeListener(this::handleStylesheetUrlChange);
+ Collection<Theme> availableThemes = getAvailableThemes().values();
+
+ List<String> stylesheetList = new ArrayList<>();
+ List<String> classList = new ArrayList<>();
+ for (Theme t : availableThemes) {
+ stylesheetList.addAll(t.getStylesheetURL()
+ .stream()
+ .map(URL::toExternalForm)
+ .collect(Collectors.toList()));
+ classList.add(getCSSClassname(t.getId()));
+ }
+
for (Scene scene : this.managedScenes) {
- Collection<Theme> availableThemes = getAvailableThemes().values();
- for (Theme t : availableThemes) {
- for (URL url : t.getStylesheetURL()) {
- if (scene.getRoot() != null) {
- scene.getRoot().getStyleClass().remove(getCSSClassname(t.getId()));
- }
- scene.getStylesheets().remove(url.toExternalForm());
- }
+ if (scene.getRoot() != null) {
+ scene.getRoot().getStyleClass().removeAll(classList);
}
+ scene.getStylesheets().removeAll(stylesheetList);
}
}

Back to the top