diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8a1c031..263b18f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] kotlin = "2.2.0" -compose-multiplatform = "1.10.0-alpha01" +compose-multiplatform = "1.10.0" dokka = "2.0.0" [plugins] diff --git a/library/build.gradle.kts b/library/build.gradle.kts index 7cfa4ce..f2a54a4 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -7,7 +7,7 @@ plugins { } group = "com.infiniteretry.snizzors" -version = "1.0.0-cmp1.10-alpha01" +version = "1.0.0-cmp1.10" kotlin { listOf( diff --git a/library/src/iosMain/kotlin/com/infiniteretry/snizzors/SnizzorsInteropElementHolder.kt b/library/src/iosMain/kotlin/com/infiniteretry/snizzors/SnizzorsInteropElementHolder.kt index 462aa41..4d3f094 100644 --- a/library/src/iosMain/kotlin/com/infiniteretry/snizzors/SnizzorsInteropElementHolder.kt +++ b/library/src/iosMain/kotlin/com/infiniteretry/snizzors/SnizzorsInteropElementHolder.kt @@ -35,7 +35,7 @@ import androidx.compose.ui.viewinterop.InteropContainer import androidx.compose.ui.viewinterop.InteropView import androidx.compose.ui.viewinterop.InteropViewGroup import androidx.compose.ui.viewinterop.InteropWrappingView -import androidx.compose.ui.viewinterop.TypedInteropViewHolder +import androidx.compose.ui.viewinterop.UIKitInteropElementHolder import androidx.compose.ui.viewinterop.UIKitInteropProperties import androidx.compose.ui.viewinterop.nativeAccessibility import androidx.compose.ui.viewinterop.pointerInteropFilter @@ -52,19 +52,12 @@ internal abstract class SnizzorsInteropElementHolder( private val interopWrappingView: InteropWrappingView, properties: UIKitInteropProperties, compositeKeyHashCode : CompositeKeyHashCode, -) : TypedInteropViewHolder( +) : UIKitInteropElementHolder( factory, interopContainer, interopWrappingView, + properties, compositeKeyHashCode, - MeasurePolicy { _, constraints -> - layout(constraints.minWidth, constraints.minHeight) { - // No-op, no children are expected - // TODO: attempt to calculate the size of the wrapped view using constraints - // and autolayout system if possible - // https://youtrack.jetbrains.com/issue/CMP-5873/iOS-investigate-intrinsic-sizing-of-interop-elements - } - } ) { constructor( factory: () -> T, @@ -81,24 +74,25 @@ internal abstract class SnizzorsInteropElementHolder( compositeKeyHashCode = compositeKeyHashCode ) + override val measurePolicy: MeasurePolicy = MeasurePolicy { _, constraints -> + layout(constraints.minWidth, constraints.minHeight) { + // No-op, no children are expected + // TODO: attempt to calculate the size of the wrapped view using constraints + // and autolayout system if possible + // https://youtrack.jetbrains.com/issue/CMP-5873/iOS-investigate-intrinsic-sizing-of-interop-elements + } + } + // TODO: no more clipping. rename/refactor? private var currentUnclippedRect: IntRect? = null private var currentClippedRect: IntRect? = null private var currentUserComponentRect: IntRect? = null - var properties = properties - set(value) { - if (field != value) { - field = value - onPropertiesChanged() - } - } - /** * Immediate frame of underlying user component. Can be different from * [currentUserComponentRect] due to scheduling. */ - protected abstract var userComponentCGRect: CValue + abstract override var userComponentCGRect: CValue init { onPropertiesChanged()