refactor: add debugInspectorInfo for Modifier and some tweaks

This commit is contained in:
2023-11-27 03:13:55 +08:00
parent 6bced884ef
commit a60b07862a
9 changed files with 69 additions and 23 deletions

View File

@@ -46,6 +46,7 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.shadow import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.platform.debugInspectorInfo
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.highcapable.flexiui.DefaultShapes import com.highcapable.flexiui.DefaultShapes
@@ -136,7 +137,13 @@ private fun Modifier.areaBox(
style: AreaBoxStyle, style: AreaBoxStyle,
then: Modifier, then: Modifier,
initializer: Modifier.() -> Modifier initializer: Modifier.() -> Modifier
) = composed { ) = composed(
inspectorInfo = debugInspectorInfo {
name = "areaBox"
properties["color"] = color
properties["style"] = style
}
) {
initializer() initializer()
.shadow(style.shadowSize, style.shape) .shadow(style.shadowSize, style.shape)
.clip(style.shape) .clip(style.shape)

View File

@@ -43,15 +43,16 @@ import androidx.compose.ui.composed
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.platform.debugInspectorInfo
import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.Role
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalShapes import com.highcapable.flexiui.LocalShapes
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
import com.highcapable.flexiui.interaction.rippleClickable
import com.highcapable.flexiui.interaction.rippleToggleable
import com.highcapable.flexiui.extension.borderOrNot import com.highcapable.flexiui.extension.borderOrNot
import com.highcapable.flexiui.extension.orElse import com.highcapable.flexiui.extension.orElse
import com.highcapable.flexiui.extension.status import com.highcapable.flexiui.extension.status
import com.highcapable.flexiui.interaction.rippleClickable
import com.highcapable.flexiui.interaction.rippleToggleable
@Immutable @Immutable
data class ButtonColors( data class ButtonColors(
@@ -178,7 +179,14 @@ private fun Modifier.button(
colors: ButtonColors, colors: ButtonColors,
style: ButtonStyle, style: ButtonStyle,
then: Modifier then: Modifier
) = composed { ) = composed(
inspectorInfo = debugInspectorInfo {
name = "button"
properties["enabled"] = enabled
properties["colors"] = colors
properties["style"] = style
}
) {
status(enabled) status(enabled)
.clip(style.shape) .clip(style.shape)
.background(colors.backgroundColor, style.shape) .background(colors.backgroundColor, style.shape)

View File

@@ -52,11 +52,11 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
import com.highcapable.flexiui.extension.borderOrNot
import com.highcapable.flexiui.extension.status
import com.highcapable.flexiui.interaction.clickable import com.highcapable.flexiui.interaction.clickable
import com.highcapable.flexiui.resources.Icons import com.highcapable.flexiui.resources.Icons
import com.highcapable.flexiui.resources.icon.CheckMark import com.highcapable.flexiui.resources.icon.CheckMark
import com.highcapable.flexiui.extension.borderOrNot
import com.highcapable.flexiui.extension.status
@Immutable @Immutable
data class CheckBoxColors( data class CheckBoxColors(

View File

@@ -91,6 +91,7 @@ import androidx.compose.ui.input.key.type
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalInputModeManager import androidx.compose.ui.platform.LocalInputModeManager
import androidx.compose.ui.platform.debugInspectorInfo
import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
@@ -105,14 +106,14 @@ import androidx.compose.ui.window.PopupProperties
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalShapes import com.highcapable.flexiui.LocalShapes
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
import com.highcapable.flexiui.interaction.rippleClickable
import com.highcapable.flexiui.resources.Icons
import com.highcapable.flexiui.resources.icon.Dropdown
import com.highcapable.flexiui.extension.borderOrNot import com.highcapable.flexiui.extension.borderOrNot
import com.highcapable.flexiui.extension.horizontal import com.highcapable.flexiui.extension.horizontal
import com.highcapable.flexiui.extension.orElse import com.highcapable.flexiui.extension.orElse
import com.highcapable.flexiui.extension.solidColor import com.highcapable.flexiui.extension.solidColor
import com.highcapable.flexiui.extension.status import com.highcapable.flexiui.extension.status
import com.highcapable.flexiui.interaction.rippleClickable
import com.highcapable.flexiui.resources.Icons
import com.highcapable.flexiui.resources.icon.Dropdown
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
@@ -187,10 +188,10 @@ fun DropdownList(
}.copy(animatedBorderWidth, SolidColor(animatedBorderColor)) }.copy(animatedBorderWidth, SolidColor(animatedBorderColor))
DropdownMenuBox( DropdownMenuBox(
modifier = Modifier.dropdownList( modifier = Modifier.dropdownList(
enabled = enabled,
colors = colors, colors = colors,
style = style, style = style,
border = border, border = border,
enabled = enabled,
focusRequester = focusRequester, focusRequester = focusRequester,
interactionSource = interactionSource, interactionSource = interactionSource,
then = modifier.rippleClickable( then = modifier.rippleClickable(
@@ -410,14 +411,22 @@ private fun DropdownMenuContent(
} }
private fun Modifier.dropdownList( private fun Modifier.dropdownList(
enabled: Boolean,
colors: DropdownListColors, colors: DropdownListColors,
style: DropdownListStyle, style: DropdownListStyle,
border: BorderStroke, border: BorderStroke,
enabled: Boolean,
focusRequester: FocusRequester, focusRequester: FocusRequester,
interactionSource: MutableInteractionSource, interactionSource: MutableInteractionSource,
then: Modifier then: Modifier
) = composed { ) = composed(
inspectorInfo = debugInspectorInfo {
name = "dropdownList"
properties["enabled"] = enabled
properties["colors"] = colors
properties["style"] = style
properties["border"] = border
}
) {
status(enabled) status(enabled)
.focusRequester(focusRequester) .focusRequester(focusRequester)
.focusable(enabled, interactionSource) .focusable(enabled, interactionSource)

View File

@@ -53,8 +53,8 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
import com.highcapable.flexiui.interaction.clickable
import com.highcapable.flexiui.extension.status import com.highcapable.flexiui.extension.status
import com.highcapable.flexiui.interaction.clickable
@Immutable @Immutable
data class RadioButtonColors( data class RadioButtonColors(

View File

@@ -35,6 +35,7 @@ import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.composed import androidx.compose.ui.composed
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.debugInspectorInfo
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
@@ -67,7 +68,13 @@ private fun Modifier.surface(
padding: PaddingValues, padding: PaddingValues,
then: Modifier, then: Modifier,
initializer: Modifier.() -> Modifier initializer: Modifier.() -> Modifier
) = composed { ) = composed(
inspectorInfo = debugInspectorInfo {
name = "surface"
properties["colors"] = colors
properties["padding"] = padding
}
) {
initializer() initializer()
.background(colors.backgroundColor) .background(colors.backgroundColor)
.then(then) .then(then)

View File

@@ -61,9 +61,9 @@ import androidx.compose.ui.unit.dp
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalShapes import com.highcapable.flexiui.LocalShapes
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
import com.highcapable.flexiui.interaction.clickable
import com.highcapable.flexiui.extension.borderOrNot import com.highcapable.flexiui.extension.borderOrNot
import com.highcapable.flexiui.extension.status import com.highcapable.flexiui.extension.status
import com.highcapable.flexiui.interaction.clickable
import kotlin.math.roundToInt import kotlin.math.roundToInt
@Immutable @Immutable

View File

@@ -73,6 +73,7 @@ import androidx.compose.ui.input.key.KeyEventType
import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.input.key.onKeyEvent
import androidx.compose.ui.input.key.type import androidx.compose.ui.input.key.type
import androidx.compose.ui.platform.debugInspectorInfo
import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.TextLayoutResult
import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.TextRange
@@ -88,16 +89,16 @@ import androidx.compose.ui.window.PopupProperties
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalShapes import com.highcapable.flexiui.LocalShapes
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
import com.highcapable.flexiui.resources.Icons
import com.highcapable.flexiui.resources.icon.Backspace
import com.highcapable.flexiui.resources.icon.ViewerClose
import com.highcapable.flexiui.resources.icon.ViewerOpen
import com.highcapable.flexiui.extension.borderOrNot import com.highcapable.flexiui.extension.borderOrNot
import com.highcapable.flexiui.extension.calculateEnd import com.highcapable.flexiui.extension.calculateEnd
import com.highcapable.flexiui.extension.calculateStart import com.highcapable.flexiui.extension.calculateStart
import com.highcapable.flexiui.extension.orElse import com.highcapable.flexiui.extension.orElse
import com.highcapable.flexiui.extension.solidColor import com.highcapable.flexiui.extension.solidColor
import com.highcapable.flexiui.extension.status import com.highcapable.flexiui.extension.status
import com.highcapable.flexiui.resources.Icons
import com.highcapable.flexiui.resources.icon.Backspace
import com.highcapable.flexiui.resources.icon.ViewerClose
import com.highcapable.flexiui.resources.icon.ViewerOpen
@Immutable @Immutable
data class TextFieldColors( data class TextFieldColors(
@@ -180,10 +181,10 @@ fun TextField(
}.copy(animatedBorderWidth, SolidColor(animatedBorderColor)) }.copy(animatedBorderWidth, SolidColor(animatedBorderColor))
BoxWithConstraints( BoxWithConstraints(
modifier = Modifier.textField( modifier = Modifier.textField(
enabled = enabled,
colors = colors, colors = colors,
style = style, style = style,
border = border, border = border,
enabled = enabled,
interactionSource = interactionSource, interactionSource = interactionSource,
then = modifier then = modifier
).pointerHoverState(TextFieldPointerState.Text) ).pointerHoverState(TextFieldPointerState.Text)
@@ -712,13 +713,21 @@ private class TextFieldKeyEventFactory {
} }
private fun Modifier.textField( private fun Modifier.textField(
enabled: Boolean,
colors: TextFieldColors, colors: TextFieldColors,
style: TextFieldStyle, style: TextFieldStyle,
border: BorderStroke, border: BorderStroke,
enabled: Boolean,
interactionSource: MutableInteractionSource, interactionSource: MutableInteractionSource,
then: Modifier then: Modifier
) = composed { ) = composed(
inspectorInfo = debugInspectorInfo {
name = "textField"
properties["enabled"] = enabled
properties["colors"] = colors
properties["style"] = style
properties["border"] = border
}
) {
status(enabled) status(enabled)
.focusable(enabled, interactionSource) .focusable(enabled, interactionSource)
.hoverable(interactionSource, enabled) .hoverable(interactionSource, enabled)

View File

@@ -27,9 +27,15 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.composed import androidx.compose.ui.composed
import androidx.compose.ui.input.pointer.PointerIcon import androidx.compose.ui.input.pointer.PointerIcon
import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.platform.debugInspectorInfo
import java.awt.Cursor import java.awt.Cursor
internal actual fun Modifier.pointerHoverState(state: TextFieldPointerState) = composed { internal actual fun Modifier.pointerHoverState(state: TextFieldPointerState) = composed(
inspectorInfo = debugInspectorInfo {
name = "pointerHoverState"
value = state
}
) {
pointerHoverIcon( pointerHoverIcon(
PointerIcon( PointerIcon(
Cursor.getPredefinedCursor(when (state) { Cursor.getPredefinedCursor(when (state) {