diff --git a/Ghidra/Framework/Gui/src/main/java/generic/theme/ThemeManager.java b/Ghidra/Framework/Gui/src/main/java/generic/theme/ThemeManager.java index cfe3d2c518..b19bb714c1 100644 --- a/Ghidra/Framework/Gui/src/main/java/generic/theme/ThemeManager.java +++ b/Ghidra/Framework/Gui/src/main/java/generic/theme/ThemeManager.java @@ -443,20 +443,6 @@ public abstract class ThemeManager { return map; } - /** - * Returns application defaults values (does not include java default values) - * @return application defaults values (does not include java default values) - */ - public GThemeValueMap getApplicationOverrides() { - GThemeValueMap currentDefaults = new GThemeValueMap(); - currentDefaults.load(applicationDefaults.getLightValues()); - if (useDarkDefaults) { - currentDefaults.load(applicationDefaults.getDarkValues()); - } - currentDefaults.load(applicationDefaults.getLookAndFeelValues(getLookAndFeelType())); - return currentDefaults; - } - /** * Returns a {@link GThemeValueMap} containing all default values for the current theme. It * is a combination of application defined defaults and java {@link LookAndFeel} defaults. diff --git a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/CustomNimbusLookAndFeel.java b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/CustomNimbusLookAndFeel.java index 46ed99320b..e9a78c9d36 100644 --- a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/CustomNimbusLookAndFeel.java +++ b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/CustomNimbusLookAndFeel.java @@ -57,7 +57,7 @@ public class CustomNimbusLookAndFeel extends NimbusLookAndFeel { // normally all of this wiring is handled by the LookAndFeelManager (see above) UiDefaultsMapper uiDefaultsMapper = new NimbusUiDefaultsMapper(defaults); installJavaDefaultsIntoThemeManager(uiDefaultsMapper); - uiDefaultsMapper.installValuesIntoUIDefaults(getApplicationOverrides()); + uiDefaultsMapper.installValuesIntoUIDefaults(themeManager.getCurrentValues()); normalizedIdToLafIdMap = uiDefaultsMapper.getNormalizedIdToLafIdMap(); return defaults; @@ -78,8 +78,4 @@ public class CustomNimbusLookAndFeel extends NimbusLookAndFeel { public Map getNormalizedIdToLafIdMap() { return normalizedIdToLafIdMap; } - - protected GThemeValueMap getApplicationOverrides() { - return themeManager.getApplicationOverrides(); - } } diff --git a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/LookAndFeelManager.java b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/LookAndFeelManager.java index b40daa914e..d8fd8e9b44 100644 --- a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/LookAndFeelManager.java +++ b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/LookAndFeelManager.java @@ -248,7 +248,7 @@ public abstract class LookAndFeelManager { GThemeValueMap javaDefaults = uiDefaultsMapper.getJavaDefaults(); themeManager.setJavaDefaults(javaDefaults); - uiDefaultsMapper.installValuesIntoUIDefaults(themeManager.getApplicationOverrides()); + uiDefaultsMapper.installValuesIntoUIDefaults(themeManager.getCurrentValues()); normalizedIdToLafIdMap = uiDefaultsMapper.getNormalizedIdToLafIdMap(); } diff --git a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/NimbusLookAndFeelManager.java b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/NimbusLookAndFeelManager.java index 8f018a8193..8c6145dcf0 100644 --- a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/NimbusLookAndFeelManager.java +++ b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/NimbusLookAndFeelManager.java @@ -76,14 +76,6 @@ public class NimbusLookAndFeelManager extends LookAndFeelManager { // as explained above, don't change the java defaults in the theme manager // on a reinstall } - - @Override - protected GThemeValueMap getApplicationOverrides() { - // on a reinstall, we may also have overrides in the current values and not - // just the theme.property files - return themeManager.getCurrentValues(); - } - }); } catch (UnsupportedLookAndFeelException e) { diff --git a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/NimbusUiDefaultsMapper.java b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/NimbusUiDefaultsMapper.java index 09f1178544..894b4ccc63 100644 --- a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/NimbusUiDefaultsMapper.java +++ b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/NimbusUiDefaultsMapper.java @@ -47,8 +47,6 @@ public class NimbusUiDefaultsMapper extends UiDefaultsMapper { ignoredLafIds.add("nimbusSelection"); ignoredLafIds.add("nimbusSelectionBackground"); - ignoredLafIds.add("defaultFont"); - } @Override diff --git a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/UiDefaultsMapper.java b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/UiDefaultsMapper.java index 1e6dc76297..7b80740001 100644 --- a/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/UiDefaultsMapper.java +++ b/Ghidra/Framework/Gui/src/main/java/generic/theme/laf/UiDefaultsMapper.java @@ -153,18 +153,19 @@ public class UiDefaultsMapper { /** * Updates the UIDefaults file with indirect colors (GColors) and any overridden font or icon - * values as defined in theme.properites files - * @param overrides a Map that contains possible LookAndFeel value overridess + * values as defined in theme.properites files and saved themes. + * @param currentValues a Map that contains all the values including those the may have + * been overridden by the theme.properties files or saved themes */ - public void installValuesIntoUIDefaults(GThemeValueMap overrides) { + public void installValuesIntoUIDefaults(GThemeValueMap currentValues) { // // In the UI Defaults, colors use indirect values and fonts and icons use direct values. // Here we install our GColors for the indirect colors. Then we set any font and icon // values that are different than the defaults. // installGColorsIntoUIDefaults(); - installOverriddenFontsIntoUIDefaults(overrides); - installOverriddenIconsIntoUIDefaults(overrides); + installOverriddenFontsIntoUIDefaults(currentValues); + installOverriddenIconsIntoUIDefaults(currentValues); } /** @@ -550,27 +551,32 @@ public class UiDefaultsMapper { } /** - * Replaces any theme overridden icons into the UiDefaults. - * @param overrides the theme values that potentially override a laf icon value + * Replace UiDefault values with theme overridden values. + * @param currentValues the theme values that potentially override a laf icon value */ - private void installOverriddenIconsIntoUIDefaults(GThemeValueMap overrides) { + private void installOverriddenIconsIntoUIDefaults(GThemeValueMap currentValues) { for (String lafId : extractedValues.getIconIds()) { + Icon currentIcon = extractedValues.getResolvedIcon(lafId); String standardId = lafIdToNormalizedIdMap.get(lafId); - if (overrides.containsIcon(standardId)) { - defaults.put(lafId, overrides.getResolvedIcon(standardId)); + Icon overriddenIcon = currentValues.getResolvedIcon(standardId); + if (overriddenIcon != null && currentIcon != overriddenIcon) { + defaults.put(lafId, overriddenIcon); } } + } /** * Replaces any theme overridden fonts into the UiDefaults. - * @param overrides the theme values that potentially override a laf font value + * @param currentValues the theme values that potentially override a laf font value */ - private void installOverriddenFontsIntoUIDefaults(GThemeValueMap overrides) { + private void installOverriddenFontsIntoUIDefaults(GThemeValueMap currentValues) { for (String lafId : extractedValues.getFontIds()) { + Font currentFont = extractedValues.getResolvedFont(lafId); String standardId = lafIdToNormalizedIdMap.get(lafId); - if (overrides.containsFont(standardId)) { - defaults.put(lafId, new FontUIResource(overrides.getResolvedFont(standardId))); + Font overriddenFont = currentValues.getResolvedFont(standardId); + if (overriddenFont != null && overriddenFont != currentFont) { + defaults.put(lafId, new FontUIResource(overriddenFont)); } } }