From 7ce7e4b99e28758f96ec79a2d188c7d2323b22a2 Mon Sep 17 00:00:00 2001 From: Sergei Tachenov Date: Mon, 30 Jan 2023 20:07:57 +0200 Subject: [PATCH] [UI] IDEA-311719, IDEA-311722 Fix togging Compact Mode with zoomed IDE It didn't work properly before because applying new density values would override those set by the IDE scaler, which would then break later adjustments, leading to incorrect sizes after zooming out or resetting to the default zoom level. GitOrigin-RevId: 722d0a4e4275f1ec6b28c4c2202b429efe59b5bf --- .../src/com/intellij/ide/actions/IdeScaleTransformer.kt | 6 +++++- .../src/com/intellij/ide/ui/laf/LafManagerImpl.kt | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ide/actions/IdeScaleTransformer.kt b/platform/platform-impl/src/com/intellij/ide/actions/IdeScaleTransformer.kt index 74dd3d749132..38e4163c3331 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/IdeScaleTransformer.kt +++ b/platform/platform-impl/src/com/intellij/ide/actions/IdeScaleTransformer.kt @@ -78,7 +78,11 @@ class IdeScaleTransformer : PersistentStateComponent Unit)? = null) { + fun scale(newScaleFactor: Float) { + scale(newScaleFactor, null) + } + + private fun scale(newScaleFactor: Float, performBeforeTweaking: (() -> Unit)?) { prepareTweaking() performBeforeTweaking?.invoke() val newParameters = ScalingParameters.ScaleOriented(newScaleFactor, savedOriginalConsoleFontSize) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.kt b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.kt index 1f5fc1f86ddc..4d99cfebe4b1 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.kt +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.kt @@ -648,8 +648,11 @@ class LafManagerImpl : LafManager(), PersistentStateComponent, Disposab } override fun applyDensity() { + val ideScale = IdeScaleTransformer.instance.currentScale + IdeScaleTransformer.instance.reset() // need to temporarily reset this to correctly apply new size values setCurrentLookAndFeel(currentLookAndFeel!!) updateUI() + IdeScaleTransformer.instance.scale(ideScale) } private fun applyDensity(defaults: UIDefaults) {