From c27f0832864ce31aed8cb89bd5d0c5fc7bb439b2 Mon Sep 17 00:00:00 2001 From: Anton Tarasov Date: Fri, 14 Apr 2017 13:50:33 +0300 Subject: [PATCH] IDEA-153597 Settings > Appearance > "Override default fonts" should display current font when unchecked --- .../src/com/intellij/ide/ui/UISettings.kt | 11 ++++++++--- .../com/intellij/ide/ui/AppearanceConfigurable.java | 11 +++++++++++ platform/util/src/com/intellij/util/ui/JBUI.java | 4 +++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/platform/editor-ui-api/src/com/intellij/ide/ui/UISettings.kt b/platform/editor-ui-api/src/com/intellij/ide/ui/UISettings.kt index 13595ec315c0..08ed57c673c0 100644 --- a/platform/editor-ui-api/src/com/intellij/ide/ui/UISettings.kt +++ b/platform/editor-ui-api/src/com/intellij/ide/ui/UISettings.kt @@ -19,6 +19,7 @@ import com.intellij.ide.WelcomeWizardUtil import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.* +import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.util.IconLoader import com.intellij.openapi.util.Pair import com.intellij.openapi.util.SystemInfo @@ -264,6 +265,8 @@ class UISettings : BaseState(), PersistentStateComponent { } companion object { + private val LOG = Logger.getInstance(UISettings::class.java) + const val ANIMATION_DURATION = 300 // Milliseconds /** Not tabbed pane. */ @@ -369,14 +372,16 @@ class UISettings : BaseState(), PersistentStateComponent { @JvmStatic fun restoreFontSize(readSize: Int, readScale: Float?): Int { + var size = readSize if (readScale == null || readScale <= 0) { // Reset font to default on switch from IDE-managed HiDPI to JRE-managed HiDPI. Doesn't affect OSX. - if (UIUtil.isJreHiDPIEnabled() && !SystemInfo.isMac) return UIUtil.DEF_SYSTEM_FONT_SIZE.toInt() + if (UIUtil.isJreHiDPIEnabled() && !SystemInfo.isMac) size = UIUtil.DEF_SYSTEM_FONT_SIZE.toInt() } else { - return ((readSize.toFloat() / readScale) * normalizingScale).toInt() + size = ((readSize.toFloat() / readScale) * normalizingScale).toInt() } - return readSize + LOG.info("Loaded: fontSize=$readSize, fontScale=$readScale; restored: fontSize=$size, fontScale=$normalizingScale") + return size } } diff --git a/platform/platform-impl/src/com/intellij/ide/ui/AppearanceConfigurable.java b/platform/platform-impl/src/com/intellij/ide/ui/AppearanceConfigurable.java index e8184f6beb2e..fdef6fcde7cd 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/AppearanceConfigurable.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/AppearanceConfigurable.java @@ -35,6 +35,7 @@ import com.intellij.ui.FontComboBox; import com.intellij.ui.ListCellRendererWrapper; import com.intellij.ui.components.JBCheckBox; import com.intellij.util.ui.GraphicsUtil; +import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -198,9 +199,11 @@ public class AppearanceConfigurable extends BaseConfigurable implements Searchab settings.setAllowMergeButtons(myComponent.myAllowMergeButtons.isSelected()); update |= settings.getCycleScrolling() != myComponent.myCycleScrollingCheckBox.isSelected(); settings.setCycleScrolling(myComponent.myCycleScrollingCheckBox.isSelected()); + boolean shouldResetLafFonts = false; if (settings.getOverrideLafFonts() != myComponent.myOverrideLAFFonts.isSelected()) { shouldUpdateUI = true; update = true; + shouldResetLafFonts = !myComponent.myOverrideLAFFonts.isSelected(); } settings.setOverrideLafFonts(myComponent.myOverrideLAFFonts.isSelected()); settings.setMoveMouseOnDefaultButton(myComponent.myMoveMouseOnDefaultButtonCheckBox.isSelected()); @@ -253,6 +256,14 @@ public class AppearanceConfigurable extends BaseConfigurable implements Searchab if (shouldUpdateUI) { lafManager.updateUI(); + if (shouldResetLafFonts) { + int defSize = JBUI.Fonts.label().getSize(); + settings.setFontSize(defSize); + myComponent.myFontSizeCombo.getModel().setSelectedItem(String.valueOf(defSize)); + String defName = JBUI.Fonts.label().getFontName(); + settings.setFontFace(defName); + myComponent.myFontCombo.setFontName(defName); + } } if (WindowManagerEx.getInstanceEx().isAlphaModeSupported()) { diff --git a/platform/util/src/com/intellij/util/ui/JBUI.java b/platform/util/src/com/intellij/util/ui/JBUI.java index 686cb3a36f8b..43b3b18fd530 100644 --- a/platform/util/src/com/intellij/util/ui/JBUI.java +++ b/platform/util/src/com/intellij/util/ui/JBUI.java @@ -152,6 +152,8 @@ public class JBUI { static { setUserScaleFactor(UIUtil.isJreHiDPIEnabled() ? 1f : SYSTEM_SCALE_FACTOR); + LOG.info("System scale factor: " + SYSTEM_SCALE_FACTOR + " (" + + (UIUtil.isJreHiDPIEnabled() ? "JRE-managed" : "IDE-managed") + " HiDPI)"); } /** @@ -315,7 +317,7 @@ public class JBUI { private static void setUserScaleFactorProperty(float scale) { PCS.firePropertyChange(USER_SCALE_FACTOR_PROPERTY, userScaleFactor, userScaleFactor = scale); - LOG.info("UI scale factor: " + userScaleFactor); + LOG.info("User scale factor: " + userScaleFactor); } /**