diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java index ed409dee4679..abc174287a1b 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java @@ -20,16 +20,11 @@ import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.registry.Registry; import com.intellij.ui.mac.foundation.Foundation; import com.intellij.ui.mac.foundation.MacUtil; -import com.intellij.util.ui.FontInfo; -import org.intellij.lang.annotations.JdkConstants; -import org.jetbrains.annotations.NotNull; import javax.swing.*; -import javax.swing.plaf.FontUIResource; import javax.swing.plaf.basic.BasicLookAndFeel; import javax.swing.plaf.metal.DefaultMetalTheme; import java.awt.*; -import java.util.HashSet; /** * @author Konstantin Bulenkov @@ -64,54 +59,6 @@ public class IntelliJLaf extends DarculaLaf { return new IdeaBlueMetalTheme(); } - @Override - public UIDefaults getDefaults() { - UIDefaults defaults = super.getDefaults(); - if (SystemInfo.isMacOSYosemite) { - installMacOSXFonts(defaults); - } - return defaults; - } - - private static void installMacOSXFonts(UIDefaults defaults) { - final String face = "HelveticaNeue-Regular"; - final FontUIResource uiFont = getFont(face, 13, Font.PLAIN); - LafManagerImpl.initFontDefaults(defaults, 13, uiFont); - for (Object key : new HashSet<>(defaults.keySet())) { - Object value = defaults.get(key); - if (value instanceof FontUIResource) { - FontUIResource font = (FontUIResource)value; - if (font.getFamily().equals("Lucida Grande") || font.getFamily().equals("Serif")) { - if (!key.toString().contains("Menu")) { - defaults.put(key, getFont(face, font.getSize(), font.getStyle())); - } - } - } - } - - FontUIResource uiFont11 = getFont(face, 11, Font.PLAIN); - defaults.put("TableHeader.font", uiFont11); - - FontUIResource buttonFont = getFont("HelveticaNeue-Medium", 13, Font.PLAIN); - defaults.put("Button.font", buttonFont); - Font menuFont = getFont("Lucida Grande", 14, Font.PLAIN); - defaults.put("Menu.font", menuFont); - defaults.put("MenuItem.font", menuFont); - defaults.put("MenuItem.acceleratorFont", menuFont); - defaults.put("PasswordField.font", defaults.getFont("TextField.font")); - } - - @NotNull - private static FontUIResource getFont(String yosemite, int size, @JdkConstants.FontStyle int style) { - if (SystemInfo.isMacOSElCapitan) { - Font font = FontInfo.get(".SF NS Display").getFont(); - if (font != null) { - return new FontUIResource(font.deriveFont(style, size)); - } - } - return new FontUIResource(yosemite, style, size); - } - public static boolean isGraphite() { if (!SystemInfo.isMac) return false; try { diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java index 27b9fa2ba2af..647ba2aefbdd 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java @@ -827,7 +827,7 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo } @SuppressWarnings({"HardCodedStringLiteral"}) - static void initFontDefaults(UIDefaults defaults, int fontSize, FontUIResource uiFont) { + public static void initFontDefaults(UIDefaults defaults, int fontSize, FontUIResource uiFont) { defaults.put("Tree.ancestorInputMap", null); FontUIResource textFont = new FontUIResource("Serif", Font.PLAIN, fontSize); FontUIResource monoFont = new FontUIResource("Monospaced", Font.PLAIN, fontSize); diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java index f53165035760..a9626235d9c7 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java @@ -31,8 +31,10 @@ import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.ColorUtil; import com.intellij.util.Alarm; import com.intellij.util.containers.hash.HashMap; +import com.intellij.util.ui.FontInfo; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; +import org.intellij.lang.annotations.JdkConstants; import org.jetbrains.annotations.NotNull; import sun.awt.AppContext; @@ -67,6 +69,45 @@ public class DarculaLaf extends BasicLookAndFeel { base = createBaseLookAndFeel(); } + private static void installMacOSXFonts(UIDefaults defaults) { + final String face = "HelveticaNeue-Regular"; + final FontUIResource uiFont = getFont(face, 13, Font.PLAIN); + LafManagerImpl.initFontDefaults(defaults, 13, uiFont); + for (Object key : new HashSet<>(defaults.keySet())) { + Object value = defaults.get(key); + if (value instanceof FontUIResource) { + FontUIResource font = (FontUIResource)value; + if (font.getFamily().equals("Lucida Grande") || font.getFamily().equals("Serif")) { + if (!key.toString().contains("Menu")) { + defaults.put(key, getFont(face, font.getSize(), font.getStyle())); + } + } + } + } + + FontUIResource uiFont11 = getFont(face, 11, Font.PLAIN); + defaults.put("TableHeader.font", uiFont11); + + FontUIResource buttonFont = getFont("HelveticaNeue-Medium", 13, Font.PLAIN); + defaults.put("Button.font", buttonFont); + Font menuFont = getFont("Lucida Grande", 14, Font.PLAIN); + defaults.put("Menu.font", menuFont); + defaults.put("MenuItem.font", menuFont); + defaults.put("MenuItem.acceleratorFont", menuFont); + defaults.put("PasswordField.font", defaults.getFont("TextField.font")); + } + + @NotNull + private static FontUIResource getFont(String yosemite, int size, @JdkConstants.FontStyle int style) { + if (SystemInfo.isMacOSElCapitan) { + Font font = FontInfo.get(".SF NS Display").getFont(); + if (font != null) { + return new FontUIResource(font.deriveFont(style, size)); + } + } + return new FontUIResource(yosemite, style, size); + } + protected BasicLookAndFeel createBaseLookAndFeel() { try { if (SystemInfo.isMac) { @@ -144,6 +185,9 @@ public class DarculaLaf extends BasicLookAndFeel { applySystemFonts(defaults); } defaults.put("EditorPane.font", defaults.getFont("TextField.font")); + if (SystemInfo.isMacOSYosemite) { + installMacOSXFonts(defaults); + } return defaults; } catch (Exception e) {