mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-264147 Chosen font variation is ignored in some dialogs
GitOrigin-RevId: 223e4b0eeb7816ced199d03b7819e1dbc1a48896
This commit is contained in:
committed by
intellij-monorepo-bot
parent
23019e06e0
commit
38155b147c
@@ -5,6 +5,7 @@ import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.colors.EditorFontType;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.ui.SimpleColoredComponent;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
@@ -18,7 +19,7 @@ public class FQNameCellRenderer extends SimpleColoredComponent implements ListCe
|
||||
|
||||
public FQNameCellRenderer() {
|
||||
EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
|
||||
FONT = new Font(scheme.getEditorFontName(), Font.PLAIN, scheme.getEditorFontSize());
|
||||
FONT = scheme.getFont(EditorFontType.PLAIN);
|
||||
setOpaque(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.openapi.editor.colors;
|
||||
|
||||
import org.intellij.lang.annotations.JdkConstants;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -40,4 +41,17 @@ public enum EditorFontType {
|
||||
public @NotNull Font getGlobalFont() {
|
||||
return EditorColorsManager.getInstance().getGlobalScheme().getFont(this);
|
||||
}
|
||||
|
||||
public static @NotNull EditorFontType forJavaStyle(@JdkConstants.FontStyle int style) {
|
||||
switch (style) {
|
||||
case Font.BOLD:
|
||||
return BOLD;
|
||||
case Font.ITALIC:
|
||||
return ITALIC;
|
||||
case Font.BOLD | Font.ITALIC :
|
||||
return BOLD_ITALIC;
|
||||
default:
|
||||
return PLAIN;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.editor.Document
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme
|
||||
import com.intellij.openapi.editor.colors.EditorFontType
|
||||
import com.intellij.openapi.editor.ex.EditorEx
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.ComponentValidator
|
||||
@@ -47,7 +48,7 @@ internal class ChangeSignaturePopup(
|
||||
@Nls
|
||||
private val nextButtonText = RefactoringBundle.message("suggested.refactoring.next.button.text")
|
||||
|
||||
private val editorFont = Font(colorsScheme.editorFontName, Font.PLAIN, colorsScheme.editorFontSize)
|
||||
private val editorFont = colorsScheme.getFont(EditorFontType.PLAIN)
|
||||
|
||||
private val signatureChangePage = SignatureChangesPage(signatureChangeModel, editorFont, screenSize, nameOfStuffToUpdate)
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.colors.EditorFontType;
|
||||
import com.intellij.openapi.editor.colors.TextAttributesKey;
|
||||
import com.intellij.openapi.editor.event.DocumentListener;
|
||||
import com.intellij.openapi.editor.event.SelectionEvent;
|
||||
@@ -859,14 +860,17 @@ public final class EditorUtil {
|
||||
*/
|
||||
public static Font getEditorFont() {
|
||||
EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
|
||||
int size = UISettings.getInstance().getPresentationMode()
|
||||
? UISettings.getInstance().getPresentationModeFontSize() - 4 : scheme.getEditorFontSize();
|
||||
return UIUtil.getFontWithFallback(scheme.getEditorFontName(), Font.PLAIN, size);
|
||||
Font editorFont = scheme.getFont(EditorFontType.PLAIN);
|
||||
if (UISettings.getInstance().getPresentationMode()) {
|
||||
editorFont = editorFont.deriveFont(UISettings.getInstance().getPresentationModeFontSize() - 4f);
|
||||
}
|
||||
return UIUtil.getFontWithFallback(editorFont);
|
||||
}
|
||||
|
||||
public static Font getEditorFont(int size) {
|
||||
EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
|
||||
return UIUtil.getFontWithFallback(scheme.getEditorFontName(), Font.PLAIN, size);
|
||||
Font font = scheme.getFont(EditorFontType.PLAIN).deriveFont((float)size);
|
||||
return UIUtil.getFontWithFallback(font);
|
||||
}
|
||||
|
||||
public static int getDefaultCaretWidth() {
|
||||
|
||||
+2
-1
@@ -7,6 +7,7 @@ import com.intellij.codeInsight.hint.HintManagerImpl;
|
||||
import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.editor.colors.EditorColors;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.colors.EditorFontType;
|
||||
import com.intellij.openapi.editor.ex.EditorGutterComponentEx;
|
||||
import com.intellij.openapi.editor.ex.RangeHighlighterEx;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUIUtil;
|
||||
@@ -240,7 +241,7 @@ class EditorFragmentRenderer {
|
||||
int h = lineHeight - 2;
|
||||
|
||||
EditorColorsScheme colorsScheme = myEditor.getColorsScheme();
|
||||
Font font = UIUtil.getFontWithFallback(colorsScheme.getEditorFontName(), Font.PLAIN, colorsScheme.getEditorFontSize());
|
||||
Font font = UIUtil.getFontWithFallback(colorsScheme.getFont(EditorFontType.PLAIN));
|
||||
g2d.setFont(font.deriveFont(font.getSize() * .8F));
|
||||
|
||||
for (RangeHighlighterEx ex : myHighlighters) {
|
||||
|
||||
@@ -2004,7 +2004,19 @@ public final class UIUtil {
|
||||
}
|
||||
|
||||
public static @NotNull FontUIResource getFontWithFallback(@NotNull Font font) {
|
||||
return getFontWithFallback(font.getFamily(), font.getStyle(), font.getSize());
|
||||
// On macOS font fallback is implemented in JDK by default
|
||||
// (except for explicitly registered fonts, e.g. the fonts we bundle with IDE, for them we don't have a solution now)
|
||||
if (!SystemInfo.isMac) {
|
||||
try {
|
||||
font = FontUtilitiesAccessor.createFontWithFallback(font);
|
||||
}
|
||||
catch (Throwable e) {
|
||||
getLogger().warn(e);
|
||||
// this might not give the same result, but if accessing FontUtilities via reflection failed, we have no choice
|
||||
return getFontWithFallback(font.getFamily(), font.getStyle(), font.getSize());
|
||||
}
|
||||
}
|
||||
return font instanceof FontUIResource ? (FontUIResource)font : new FontUIResource(font);
|
||||
}
|
||||
|
||||
public static @NotNull FontUIResource getFontWithFallback(@Nullable String familyName, @JdkConstants.FontStyle int style, int size) {
|
||||
@@ -3465,4 +3477,33 @@ public final class UIUtil {
|
||||
}
|
||||
return Math.min(result, 255);
|
||||
}
|
||||
|
||||
private static class FontUtilitiesAccessor {
|
||||
private static final Method fontSupportsDefaultEncodingMethod;
|
||||
private static final Method getCompositeFontUIResourceMethod;
|
||||
|
||||
static {
|
||||
Method m1 = null;
|
||||
Method m2 = null;
|
||||
try {
|
||||
Class<?> c = Class.forName("sun.font.FontUtilities");
|
||||
m1 = c.getDeclaredMethod("fontSupportsDefaultEncoding", Font.class);
|
||||
m2 = c.getDeclaredMethod("getCompositeFontUIResource", Font.class);
|
||||
}
|
||||
catch (Throwable e) {
|
||||
getLogger().warn(e);
|
||||
}
|
||||
fontSupportsDefaultEncodingMethod = m1;
|
||||
getCompositeFontUIResourceMethod = m2;
|
||||
}
|
||||
|
||||
private static Font createFontWithFallback(Font font) throws Exception {
|
||||
if (fontSupportsDefaultEncodingMethod == null ||
|
||||
getCompositeFontUIResourceMethod == null ||
|
||||
Boolean.TRUE.equals(fontSupportsDefaultEncodingMethod.invoke(null, font))) {
|
||||
return font;
|
||||
}
|
||||
return (Font)getCompositeFontUIResourceMethod.invoke(null, font);
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -8,6 +8,7 @@ import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorCustomElementRenderer;
|
||||
import com.intellij.openapi.editor.Inlay;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.colors.EditorFontType;
|
||||
import com.intellij.openapi.editor.colors.TextAttributesKey;
|
||||
import com.intellij.openapi.editor.event.EditorMouseEvent;
|
||||
import com.intellij.openapi.editor.ex.EditorEx;
|
||||
@@ -99,7 +100,7 @@ public final class InlineDebugRenderer implements EditorCustomElementRenderer {
|
||||
EditorColorsScheme colorsScheme = editor.getColorsScheme();
|
||||
TextAttributes attributes = editor.getColorsScheme().getAttributes(DebuggerColors.INLINED_VALUES_EXECUTION_LINE);
|
||||
int fontStyle = attributes == null ? Font.PLAIN : attributes.getFontType();
|
||||
return UIUtil.getFontWithFallback(colorsScheme.getEditorFontName(), fontStyle, colorsScheme.getEditorFontSize());
|
||||
return UIUtil.getFontWithFallback(colorsScheme.getFont(EditorFontType.forJavaStyle(fontStyle)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.intellij.ide.DataManager;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.colors.EditorFontType;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.ui.SimpleColoredComponent;
|
||||
@@ -46,7 +47,7 @@ public class PyImportChooser implements ImportChooser {
|
||||
|
||||
CellRenderer() {
|
||||
EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
|
||||
FONT = new Font(scheme.getEditorFontName(), Font.PLAIN, scheme.getEditorFontSize());
|
||||
FONT = scheme.getFont(EditorFontType.PLAIN);
|
||||
setOpaque(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.codeInsight.daemon.impl.analysis;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.colors.EditorFontType;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
import com.intellij.ui.ColoredListCellRenderer;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
@@ -35,7 +36,7 @@ public class XmlNSRenderer extends ColoredListCellRenderer<String> {
|
||||
|
||||
public XmlNSRenderer() {
|
||||
EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
|
||||
setFont(new Font(scheme.getEditorFontName(), Font.PLAIN, scheme.getEditorFontSize()));
|
||||
setFont(scheme.getFont(EditorFontType.PLAIN));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user