ui: better "disabled foreground" default on GTK+
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>
Fri, 31 Oct 2014 20:36:41 +0000 (21:36 +0100)
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>
Fri, 31 Oct 2014 20:36:41 +0000 (21:36 +0100)
platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java
platform/util/src/com/intellij/util/ui/UIUtil.java

index 929d03d28db03b972438848cd7632dac509836e4..53ff6cdf5f1eff52eb973144da5fde66284a926d 100644 (file)
@@ -243,7 +243,7 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo
             @Override
             public void run() {
               fixGtkPopupStyle();
-              patchOptionPaneIcons(UIManager.getLookAndFeelDefaults());
+              patchGtkDefaults(UIManager.getLookAndFeelDefaults());
             }
           });
         }
@@ -535,7 +535,7 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo
 
     patchLafFonts(uiDefaults);
 
-    patchOptionPaneIcons(uiDefaults);
+    patchGtkDefaults(uiDefaults);
 
     fixSeparatorColor(uiDefaults);
 
@@ -695,13 +695,12 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo
     }
   }
 
-  private static void patchOptionPaneIcons(UIDefaults defaults) {
+  private static void patchGtkDefaults(UIDefaults defaults) {
     if (!UIUtil.isUnderGTKLookAndFeel()) return;
 
     Map<String, Icon> map = ContainerUtil.newHashMap(
       Arrays.asList("OptionPane.errorIcon", "OptionPane.informationIcon", "OptionPane.warningIcon", "OptionPane.questionIcon"),
       Arrays.asList(AllIcons.General.ErrorDialog, AllIcons.General.InformationDialog, AllIcons.General.WarningDialog, AllIcons.General.QuestionDialog));
-
     // GTK+ L&F keeps icons hidden in style
     SynthStyle style = SynthLookAndFeel.getStyle(new JOptionPane(""), Region.DESKTOP_ICON);
     for (String key : map.keySet()) {
@@ -710,6 +709,12 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo
       Object icon = style == null ? null : style.get(null, key);
       defaults.put(key, icon instanceof Icon ? icon : map.get(key));
     }
+
+    Color fg = defaults.getColor("Label.foreground");
+    Color bg = defaults.getColor("Label.background");
+    if (fg != null && bg != null) {
+      defaults.put("Label.disabledForeground", UIUtil.mix(fg, bg, 0.5));
+    }
   }
 
   private void patchLafFonts(UIDefaults uiDefaults) {
index f9895a149168f9c5ef81a87dfb94228cd67bb32c..47f5990554a3abc20e27d48de2ea1a00ae0e0372 100644 (file)
@@ -1248,6 +1248,7 @@ public class UIUtil {
 
   public static Color shade(final Color c, final double factor, final double alphaFactor) {
     assert factor >= 0 : factor;
+    //noinspection UseJBColor
     return new Color(
       Math.min((int)Math.round(c.getRed() * factor), 255),
       Math.min((int)Math.round(c.getGreen() * factor), 255),
@@ -1259,6 +1260,7 @@ public class UIUtil {
   public static Color mix(final Color c1, final Color c2, final double factor) {
     assert 0 <= factor && factor <= 1.0 : factor;
     final double backFactor = 1.0 - factor;
+    //noinspection UseJBColor
     return new Color(
       Math.min((int)Math.round(c1.getRed() * backFactor + c2.getRed() * factor), 255),
       Math.min((int)Math.round(c1.getGreen() * backFactor + c2.getGreen() * factor), 255),