[UI] IDEA-242013 Add Remember Size For Each Tool Window setting to old UI

Unfortunately, due to UISettings living in editor-ui-api, the isNewUI() check
is not available there, so in order for the two settings to be independent,
two actually separate settings were created:

- rememberSizeForEachToolWindowOldUI (the new one);
- rememberSizeForEachToolWindowNewUI (replaces the existing setting for the new UI).

Since the new UI setting wasn't released yet (it wasn't a part of 2022.3), it should be
fine compatibility-wise.

GitOrigin-RevId: 59ed73c0fea9aa33ab288fe6417f36f4a9e399e0
This commit is contained in:
Sergei Tachenov
2022-12-05 17:33:26 +00:00
committed by intellij-monorepo-bot
parent 51989c4378
commit 1a4b34963b
5 changed files with 35 additions and 18 deletions
@@ -263,10 +263,16 @@ class UISettings @NonInjectable constructor(private val notRoamableOptions: NotR
state.wideScreenSupport = value
}
var rememberSizeForEachToolWindow: Boolean
get() = state.rememberSizeForEachToolWindow
var rememberSizeForEachToolWindowOldUI: Boolean
get() = state.rememberSizeForEachToolWindowOldUI
set(value) {
state.rememberSizeForEachToolWindow = value
state.rememberSizeForEachToolWindowOldUI = value
}
var rememberSizeForEachToolWindowNewUI: Boolean
get() = state.rememberSizeForEachToolWindowNewUI
set(value) {
state.rememberSizeForEachToolWindowNewUI = value
}
var sortBookmarks: Boolean
@@ -67,8 +67,10 @@ class UISettingsState : BaseState() {
@get:OptionTag("WIDESCREEN_SUPPORT")
var wideScreenSupport by property(false)
@get:OptionTag("REMEMBER_SIZE_FOR_EACH_TOOL_WINDOW")
var rememberSizeForEachToolWindow by property(false)
@get:OptionTag("REMEMBER_SIZE_FOR_EACH_TOOL_WINDOW_OLD_UI")
var rememberSizeForEachToolWindowOldUI by property(true)
@get:OptionTag("REMEMBER_SIZE_FOR_EACH_TOOL_WINDOW_NEW_UI")
var rememberSizeForEachToolWindowNewUI by property(false)
@get:OptionTag("LEFT_HORIZONTAL_SPLIT")
var leftHorizontalSplit by property(false)
@get:OptionTag("RIGHT_HORIZONTAL_SPLIT")
@@ -84,8 +84,10 @@ private val cdLeftToolWindowLayout
get() = CheckboxDescriptor(message("checkbox.left.toolwindow.layout"), settings::leftHorizontalSplit, groupName = windowOptionGroupName)
private val cdRightToolWindowLayout
get() = CheckboxDescriptor(message("checkbox.right.toolwindow.layout"), settings::rightHorizontalSplit, groupName = windowOptionGroupName)
private val cdRememberSizeForEachToolWindow
get() = CheckboxDescriptor(message("checkbox.remember.size.for.each.tool.window"), settings::rememberSizeForEachToolWindow, groupName = windowOptionGroupName)
private val cdRememberSizeForEachToolWindowOldUI
get() = CheckboxDescriptor(message("checkbox.remember.size.for.each.tool.window"), settings::rememberSizeForEachToolWindowOldUI, groupName = windowOptionGroupName)
private val cdRememberSizeForEachToolWindowNewUI
get() = CheckboxDescriptor(message("checkbox.remember.size.for.each.tool.window"), settings::rememberSizeForEachToolWindowNewUI, groupName = windowOptionGroupName)
private val cdUseCompactTreeIndents
get() = CheckboxDescriptor(message("checkbox.compact.tree.indents"), settings::compactTreeIndents, groupName = uiOptionGroupName)
private val cdShowTreeIndents
@@ -391,17 +393,27 @@ internal class AppearanceConfigurable : BoundSearchableConfigurable(message("tit
)
twoColumnsRow(
{ checkBox(cdLeftToolWindowLayout) },
{ checkBox(cdRightToolWindowLayout) }
)
twoColumnsRow(
{
if (ExperimentalUI.isNewUI()) {
checkBox(cdRememberSizeForEachToolWindow)
checkBox(cdRememberSizeForEachToolWindowNewUI)
}
else {
checkBox(cdShowToolWindowNumbers)
checkBox(cdRememberSizeForEachToolWindowOldUI)
}
})
},
)
if (ExperimentalUI.isNewUI()) {
twoColumnsRow(
{ checkBox(cdRightToolWindowLayout) },
null,
)
}
else {
twoColumnsRow(
{ checkBox(cdRightToolWindowLayout) },
{ checkBox(cdShowToolWindowNumbers) },
)
}
}
group(message("group.presentation.mode")) {
@@ -642,9 +642,9 @@ open class ToolWindowManagerImpl @NonInjectable @TestOnly internal constructor(
private fun isIndependentToolWindowResizeEnabled(): Boolean =
if (isNewUi)
UISettings.getInstance().rememberSizeForEachToolWindow
UISettings.getInstance().rememberSizeForEachToolWindowNewUI
else
Registry.`is`("toolwindow.independent.sizes")
UISettings.getInstance().rememberSizeForEachToolWindowOldUI
private fun visibleToolWindow(anchor: ToolWindowAnchor): ToolWindowEntry? =
idToEntry.values.firstOrNull { it.isVisibleAndDockedTo(anchor) }
@@ -1907,9 +1907,6 @@ toolwindow.active.tab.contrast.background.color=808080
toolwindow.active.tab.contrast.background.color.description=Contrast color for selected tab background in tool windows
toolwindow.disable.overlay.by.double.key=false
toolwindow.disable.overlay.by.double.key.description=If Toolwindow Stripe button panels are hidden, you can invoke them by double Alt/Meta (hold)
toolwindow.independent.sizes=true
toolwindow.independent.sizes.description=If enabled, old UI tool windows docked to the same area will have independent sizes, \
otherwise resizing one window will resize them all. For the new UI it's now configured in the settings
linux.kernel.variables.validate.every.time=true
linux.kernel.variables.validate.every.time.description=Check that kernel variables required to run profiler are set before every profiler start