diff options
author | Tom Schindl | 2015-12-11 02:48:48 +0000 |
---|---|---|
committer | Tom Schindl | 2015-12-11 02:48:48 +0000 |
commit | 52f59743825f8d0c5d7a9b54f22bd0bcdc3d0463 (patch) | |
tree | cea2831393daa5144b8deed4297ef03d213cbc08 | |
parent | 0d2e2665d5d46724603268a17b550b64a433995b (diff) | |
download | org.eclipse.efxclipse-52f59743825f8d0c5d7a9b54f22bd0bcdc3d0463.tar.gz org.eclipse.efxclipse-52f59743825f8d0c5d7a9b54f22bd0bcdc3d0463.tar.xz org.eclipse.efxclipse-52f59743825f8d0c5d7a9b54f22bd0bcdc3d0463.zip |
optimize unsetting of a theme
-rwxr-xr-x | bundles/runtime/org.eclipse.fx.ui.theme/src/org/eclipse/fx/ui/theme/internal/DefaultThemeManager.java | 24 |
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);
}
}
|