Skip to content

Commit

Permalink
prevent the ComboBox from expanding
Browse files Browse the repository at this point in the history
reference: #601 (review)
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
  • Loading branch information
hamen committed Sep 20, 2024
1 parent 6095e94 commit 7569b5c
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ import com.intellij.util.ui.JBUI
import com.intellij.util.ui.components.BorderLayoutPanel
import icons.IdeSampleIconKeys
import icons.JewelIcons
import java.awt.Component
import javax.swing.BoxLayout
import javax.swing.DefaultComboBoxModel
import javax.swing.JLabel
import javax.swing.JPanel
import org.jetbrains.jewel.bridge.JewelComposePanel
import org.jetbrains.jewel.bridge.medium
import org.jetbrains.jewel.foundation.theme.JewelTheme
Expand All @@ -57,11 +62,6 @@ import org.jetbrains.jewel.ui.component.TextField
import org.jetbrains.jewel.ui.component.Typography
import org.jetbrains.jewel.ui.component.separator
import org.jetbrains.jewel.ui.theme.textAreaStyle
import java.awt.Component
import javax.swing.BoxLayout
import javax.swing.DefaultComboBoxModel
import javax.swing.JLabel
import javax.swing.JPanel

internal class SwingComparisonTabPanel : BorderLayoutPanel() {
private val mainContent =
Expand Down Expand Up @@ -201,7 +201,15 @@ internal class SwingComparisonTabPanel : BorderLayoutPanel() {
private fun Panel.comboBoxesRow() {
row("ComboBoxes:") {
// Swing ComboBoxes
val zoomLevels = arrayOf("100%", "125%", "150%", "175%", "200%", "300% eiojrwehiaeuhfd hfhiufh wephf wfnf fjoheiufhweuirh wqr")
val zoomLevels =
arrayOf(
"100%",
"125%",
"150%",
"175%",
"200%",
"300% eiojrwehiaeuhfd hfhiufh wephf wfnf fjoheiufhweuirh wqr",
)

JPanel()
.apply {
Expand Down Expand Up @@ -283,7 +291,7 @@ internal class SwingComparisonTabPanel : BorderLayoutPanel() {
}
},
)
Column(verticalArrangement = Arrangement.spacedBy(4.dp)) {
Column(verticalArrangement = Arrangement.spacedBy(4.dp)) {
ComboBox(
inputTextFieldState = inputTextFieldState,
outline = Outline.Warning,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ fun Dropdowns() {
},
)
ComboBox(
modifier = Modifier.width(140.dp),
inputTextFieldState = inputTextFieldState,
outline = Outline.Warning,
menuContent = {
Expand Down
20 changes: 17 additions & 3 deletions ui/src/main/kotlin/org/jetbrains/jewel/ui/component/ComboBox.kt
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public fun ComboBox(
val hasNoOutline = outline == Outline.None

var componentWidth by remember { mutableIntStateOf(-1) }
var initialTextFieldWidth by remember { mutableStateOf<Int?>(null) }
Box(
modifier =
modifier
Expand Down Expand Up @@ -141,15 +142,28 @@ public fun ComboBox(
CompositionLocalProvider(LocalContentColor provides colors.contentFor(comboBoxState).value) {
Box(
modifier =
Modifier.fillMaxWidth().padding(end = arrowMinSize.width).onFocusChanged {
modifier.fillMaxWidth().padding(end = arrowMinSize.width).onFocusChanged {
comboBoxState = comboBoxState.copy(focused = it.isFocused)
},
contentAlignment = Alignment.CenterStart,
content = {
if (isEditable) {
BasicTextField(
state = inputTextFieldState,
modifier = Modifier.fillMaxWidth().padding(style.metrics.contentPadding),
modifier =
modifier
.padding(style.metrics.contentPadding)
.onSizeChanged { size ->
// Track the size of the BasicTextField when it first
// renders
if (initialTextFieldWidth == null) {
initialTextFieldWidth = size.width
}
}
.then(
// Apply the initial width to prevent expansion
initialTextFieldWidth?.let { Modifier.width(it.dp) } ?: Modifier
),
lineLimits = TextFieldLineLimits.SingleLine,
textStyle = textStyle,
)
Expand All @@ -159,7 +173,7 @@ public fun ComboBox(
style = textStyle,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.fillMaxWidth().padding(style.metrics.contentPadding),
modifier = modifier.fillMaxWidth().padding(style.metrics.contentPadding),
)
}
},
Expand Down

0 comments on commit 7569b5c

Please sign in to comment.