Merge "Fix unspecified preferred width" into androidx-main
diff --git a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/PaneScaffold.kt b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/PaneScaffold.kt
index 6832d50..77310445 100644
--- a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/PaneScaffold.kt
+++ b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/PaneScaffold.kt
@@ -31,8 +31,10 @@
 @ExperimentalMaterial3AdaptiveApi
 interface PaneScaffoldScope {
     /**
-     * Specify the preferred width of the pane. The relevant pane scaffold implementations are
-     * supposed to respect the preferred width of a pane whenever it's possible.
+     * This modifier specifies the preferred width for a pane, and the pane scaffold implementation
+     * will respect this width whenever possible. In case the modifier is not set or set to
+     * [Dp.Unspecified], the default preferred widths of the respective scaffold implementation will
+     * be used.
      */
     fun Modifier.preferredWidth(width: Dp): Modifier
 }
diff --git a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffold.kt b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffold.kt
index 180d323..d4b5036 100644
--- a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffold.kt
+++ b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffold.kt
@@ -712,11 +712,10 @@
 ) : Measurable by measurable {
     private val data = ((parentData as? PaneScaffoldParentData) ?: PaneScaffoldParentData())
 
-    // TODO(conradchen): Handle the case of a low priority pane with no preferred with
-    var measuredWidth = when (data.preferredWidth) {
-        null -> defaultPreferredWidth
-        Float.NaN -> 0
-        else -> data.preferredWidth!!.toInt()
+    var measuredWidth = if (data.preferredWidth == null || data.preferredWidth!!.isNaN()) {
+        defaultPreferredWidth
+    } else {
+        data.preferredWidth!!.toInt()
     }
 }