From 91747319aa2d751234bece2721f791f7304a5544 Mon Sep 17 00:00:00 2001 From: FalsePattern Date: Wed, 16 Apr 2025 00:17:02 +0200 Subject: [PATCH] fix: non-scrollable ZLS settings --- CHANGELOG.md | 5 +++++ .../toolchain/base/ZigToolchainConfigurable.kt | 5 +++-- .../zigbrains/shared/ui/UUIDComboBoxDriver.kt | 14 ++++++++++++++ .../zigbrains/lsp/zls/ZLSConfigurable.kt | 7 +++---- .../falsepattern/zigbrains/lsp/zls/ui/ZLSDriver.kt | 12 ++++++++---- 5 files changed, 33 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e548f2a0..3ed3f427 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,11 @@ Changelog structure reference: ## [Unreleased] +### Fixed + +- Project + - ZLS settings not scrollable in the language server list + ## [25.0.1] ### Fixed diff --git a/core/src/main/kotlin/com/falsepattern/zigbrains/project/toolchain/base/ZigToolchainConfigurable.kt b/core/src/main/kotlin/com/falsepattern/zigbrains/project/toolchain/base/ZigToolchainConfigurable.kt index abbd34f7..018b9e7b 100644 --- a/core/src/main/kotlin/com/falsepattern/zigbrains/project/toolchain/base/ZigToolchainConfigurable.kt +++ b/core/src/main/kotlin/com/falsepattern/zigbrains/project/toolchain/base/ZigToolchainConfigurable.kt @@ -25,6 +25,7 @@ package com.falsepattern.zigbrains.project.toolchain.base import com.falsepattern.zigbrains.project.settings.ZigProjectConfigurationProvider import com.falsepattern.zigbrains.project.toolchain.ui.ImmutableElementPanel import com.falsepattern.zigbrains.project.toolchain.zigToolchainList +import com.falsepattern.zigbrains.shared.ui.UUIDComboBoxDriver.Companion.wrapModal import com.intellij.openapi.ui.NamedConfigurable import com.intellij.openapi.util.Key import com.intellij.openapi.util.NlsContexts @@ -37,7 +38,7 @@ abstract class ZigToolchainConfigurable( val uuid: UUID, tc: T, val data: ZigProjectConfigurationProvider.IUserDataBridge?, - val modal: Boolean + private val modal: Boolean ): NamedConfigurable() { var toolchain: T = tc set(value) { @@ -64,7 +65,7 @@ abstract class ZigToolchainConfigurable( views.forEach { it.attach(this@panel) } }.withMinimumWidth(20) views.forEach { it.reset(toolchain) } - return p + return wrapModal(p, modal) } override fun getEditableObject(): UUID? { diff --git a/core/src/main/kotlin/com/falsepattern/zigbrains/shared/ui/UUIDComboBoxDriver.kt b/core/src/main/kotlin/com/falsepattern/zigbrains/shared/ui/UUIDComboBoxDriver.kt index aa7fa261..01a52625 100644 --- a/core/src/main/kotlin/com/falsepattern/zigbrains/shared/ui/UUIDComboBoxDriver.kt +++ b/core/src/main/kotlin/com/falsepattern/zigbrains/shared/ui/UUIDComboBoxDriver.kt @@ -24,8 +24,11 @@ package com.falsepattern.zigbrains.shared.ui import com.falsepattern.zigbrains.shared.UUIDMapSerializable import com.intellij.openapi.ui.NamedConfigurable +import com.intellij.ui.components.JBScrollPane import java.awt.Component +import java.awt.Dimension import java.util.* +import javax.swing.JComponent interface UUIDComboBoxDriver { val theMap: UUIDMapSerializable.Converting @@ -34,4 +37,15 @@ interface UUIDComboBoxDriver { fun createComboBox(model: ZBModel): ZBComboBox suspend fun resolvePseudo(context: Component, elem: ListElem.Pseudo): UUID? fun createNamedConfigurable(uuid: UUID, elem: T): NamedConfigurable + + companion object { + fun wrapModal(component: JComponent, modal: Boolean): JComponent { + if (modal) { + component.preferredSize = Dimension(640, 480) + return component + } else { + return JBScrollPane(component) + } + } + } } \ No newline at end of file diff --git a/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/zls/ZLSConfigurable.kt b/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/zls/ZLSConfigurable.kt index 87c5fb76..2cead1c1 100644 --- a/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/zls/ZLSConfigurable.kt +++ b/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/zls/ZLSConfigurable.kt @@ -22,14 +22,14 @@ package com.falsepattern.zigbrains.lsp.zls +import com.falsepattern.zigbrains.shared.ui.UUIDComboBoxDriver.Companion.wrapModal import com.intellij.openapi.ui.NamedConfigurable import com.intellij.openapi.util.NlsContexts import com.intellij.ui.dsl.builder.panel -import java.awt.Dimension import java.util.* import javax.swing.JComponent -class ZLSConfigurable(val uuid: UUID, zls: ZLSVersion): NamedConfigurable() { +class ZLSConfigurable(val uuid: UUID, zls: ZLSVersion, private val modal: Boolean): NamedConfigurable() { var zls: ZLSVersion = zls set(value) { zlsInstallations[uuid] = value @@ -59,8 +59,7 @@ class ZLSConfigurable(val uuid: UUID, zls: ZLSVersion): NamedConfigurable( val p = panel { view.attach(this@panel) } - p.preferredSize = Dimension(640, 480) - return p + return wrapModal(p, modal) } override fun getDisplayName(): @NlsContexts.ConfigurableName String? { diff --git a/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/zls/ui/ZLSDriver.kt b/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/zls/ui/ZLSDriver.kt index 01f76706..5ab316f7 100644 --- a/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/zls/ui/ZLSDriver.kt +++ b/lsp/src/main/kotlin/com/falsepattern/zigbrains/lsp/zls/ui/ZLSDriver.kt @@ -67,10 +67,6 @@ sealed interface ZLSDriver: UUIDComboBoxDriver { return ZLSComboBox(model) } - override fun createNamedConfigurable(uuid: UUID, elem: ZLSVersion): NamedConfigurable { - return ZLSConfigurable(uuid, elem) - } - override suspend fun resolvePseudo( context: Component, elem: ListElem.Pseudo @@ -93,6 +89,10 @@ sealed interface ZLSDriver: UUIDComboBoxDriver { return res } + override fun createNamedConfigurable(uuid: UUID, elem: ZLSVersion): NamedConfigurable { + return ZLSConfigurable(uuid, elem, false) + } + override val data: ZigProjectConfigurationProvider.IUserDataBridge? get() = null } @@ -113,6 +113,10 @@ sealed interface ZLSDriver: UUIDComboBoxDriver { res.add(suggestZLSVersions(project, data, toolchainVersion).asPending()) return res } + + override fun createNamedConfigurable(uuid: UUID, elem: ZLSVersion): NamedConfigurable { + return ZLSConfigurable(uuid, elem, true) + } } }