From 867df61c673829e24d3aefc575af4b69d91d698e Mon Sep 17 00:00:00 2001 From: Xnick417x Date: Thu, 16 Jul 2026 17:14:43 +0000 Subject: [PATCH 1/4] XServer drawer: scale menu width as a fraction of screen width --- app/src/main/runtime/display/XServerDisplayHost.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/runtime/display/XServerDisplayHost.kt b/app/src/main/runtime/display/XServerDisplayHost.kt index 64b479aaf..5b026f75a 100644 --- a/app/src/main/runtime/display/XServerDisplayHost.kt +++ b/app/src/main/runtime/display/XServerDisplayHost.kt @@ -65,7 +65,7 @@ const val XSERVER_DRAWER_OPEN_TRIGGER_DP = 32 // Open only on a clearly rightward swipe: dx must exceed this * |dy| (~27deg of horizontal). const val XSERVER_DRAWER_OPEN_HORIZONTAL_RATIO = 2f -private val DrawerWidth = 300.dp +private const val DrawerWidthFraction = 0.253f private val DrawerStartPadding = 6.dp private val DrawerVerticalPadding = 6.dp private const val DrawerSettleAnimationMs = 200 @@ -119,7 +119,8 @@ private fun XServerDisplayHost( val animationScope = rememberCoroutineScope() val density = LocalDensity.current val viewConfiguration = LocalViewConfiguration.current - val closedFallbackPx = with(density) { -(DrawerWidth + DrawerStartPadding).toPx() } + val screenWidthDp = LocalConfiguration.current.screenWidthDp.dp + val closedFallbackPx = with(density) { -((screenWidthDp * DrawerWidthFraction) + DrawerStartPadding).toPx() } var drawerOffsetPx by remember { mutableFloatStateOf(closedFallbackPx) } var drawerWidthPx by remember { mutableFloatStateOf(0f) } val drawerClosedOffset = @@ -297,7 +298,7 @@ private fun XServerDisplayHost( } else { 1f } - val scaledDrawerWidth = DrawerWidth * evenScale + val scaledDrawerWidth = maxWidth * DrawerWidthFraction * evenScale CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) { AndroidView( From d098e13c3dabf56b76647f5d6405469428e67772 Mon Sep 17 00:00:00 2001 From: Xnick417x Date: Thu, 16 Jul 2026 20:48:23 +0000 Subject: [PATCH 2/4] XServer drawer: floor scaled menu width at 295dp, cap at 460dp --- app/src/main/runtime/display/XServerDisplayHost.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/runtime/display/XServerDisplayHost.kt b/app/src/main/runtime/display/XServerDisplayHost.kt index 5b026f75a..14e15618c 100644 --- a/app/src/main/runtime/display/XServerDisplayHost.kt +++ b/app/src/main/runtime/display/XServerDisplayHost.kt @@ -65,7 +65,9 @@ const val XSERVER_DRAWER_OPEN_TRIGGER_DP = 32 // Open only on a clearly rightward swipe: dx must exceed this * |dy| (~27deg of horizontal). const val XSERVER_DRAWER_OPEN_HORIZONTAL_RATIO = 2f -private const val DrawerWidthFraction = 0.253f +private val DrawerMinWidth = 295.dp +private val DrawerMaxWidth = 460.dp +private const val DrawerWidthFraction = 0.30f private val DrawerStartPadding = 6.dp private val DrawerVerticalPadding = 6.dp private const val DrawerSettleAnimationMs = 200 @@ -119,8 +121,10 @@ private fun XServerDisplayHost( val animationScope = rememberCoroutineScope() val density = LocalDensity.current val viewConfiguration = LocalViewConfiguration.current - val screenWidthDp = LocalConfiguration.current.screenWidthDp.dp - val closedFallbackPx = with(density) { -((screenWidthDp * DrawerWidthFraction) + DrawerStartPadding).toPx() } + val drawerWidth = + (LocalConfiguration.current.screenWidthDp * DrawerWidthFraction).dp + .coerceIn(DrawerMinWidth, DrawerMaxWidth) + val closedFallbackPx = with(density) { -(drawerWidth + DrawerStartPadding).toPx() } var drawerOffsetPx by remember { mutableFloatStateOf(closedFallbackPx) } var drawerWidthPx by remember { mutableFloatStateOf(0f) } val drawerClosedOffset = @@ -298,7 +302,7 @@ private fun XServerDisplayHost( } else { 1f } - val scaledDrawerWidth = maxWidth * DrawerWidthFraction * evenScale + val scaledDrawerWidth = drawerWidth * evenScale CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) { AndroidView( From 11785d6d8f0cdcf04b08b5854305b2a9a6054011 Mon Sep 17 00:00:00 2001 From: Xnick417x Date: Fri, 17 Jul 2026 19:38:46 +0000 Subject: [PATCH 3/4] XServer drawer: set menu width to 0.35 of screen width, cap 600dp --- app/src/main/runtime/display/XServerDisplayHost.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/runtime/display/XServerDisplayHost.kt b/app/src/main/runtime/display/XServerDisplayHost.kt index 14e15618c..ff2b63a83 100644 --- a/app/src/main/runtime/display/XServerDisplayHost.kt +++ b/app/src/main/runtime/display/XServerDisplayHost.kt @@ -66,8 +66,8 @@ const val XSERVER_DRAWER_OPEN_TRIGGER_DP = 32 const val XSERVER_DRAWER_OPEN_HORIZONTAL_RATIO = 2f private val DrawerMinWidth = 295.dp -private val DrawerMaxWidth = 460.dp -private const val DrawerWidthFraction = 0.30f +private val DrawerMaxWidth = 600.dp +private const val DrawerWidthFraction = 0.35f private val DrawerStartPadding = 6.dp private val DrawerVerticalPadding = 6.dp private const val DrawerSettleAnimationMs = 200 From 00c7c68075a35ad87160bd9b2aa0a377f9c842c3 Mon Sep 17 00:00:00 2001 From: Xnick417x Date: Fri, 17 Jul 2026 21:51:15 +0000 Subject: [PATCH 4/4] XServer drawer: scale menu width by screen short side (0.76), cap 960dp --- app/src/main/runtime/display/XServerDisplayHost.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/runtime/display/XServerDisplayHost.kt b/app/src/main/runtime/display/XServerDisplayHost.kt index ff2b63a83..b6eea0cb8 100644 --- a/app/src/main/runtime/display/XServerDisplayHost.kt +++ b/app/src/main/runtime/display/XServerDisplayHost.kt @@ -66,8 +66,8 @@ const val XSERVER_DRAWER_OPEN_TRIGGER_DP = 32 const val XSERVER_DRAWER_OPEN_HORIZONTAL_RATIO = 2f private val DrawerMinWidth = 295.dp -private val DrawerMaxWidth = 600.dp -private const val DrawerWidthFraction = 0.35f +private val DrawerMaxWidth = 960.dp +private const val DrawerHeightFactor = 0.76f private val DrawerStartPadding = 6.dp private val DrawerVerticalPadding = 6.dp private const val DrawerSettleAnimationMs = 200 @@ -121,8 +121,9 @@ private fun XServerDisplayHost( val animationScope = rememberCoroutineScope() val density = LocalDensity.current val viewConfiguration = LocalViewConfiguration.current + val configuration = LocalConfiguration.current val drawerWidth = - (LocalConfiguration.current.screenWidthDp * DrawerWidthFraction).dp + (minOf(configuration.screenWidthDp, configuration.screenHeightDp) * DrawerHeightFactor).dp .coerceIn(DrawerMinWidth, DrawerMaxWidth) val closedFallbackPx = with(density) { -(drawerWidth + DrawerStartPadding).toPx() } var drawerOffsetPx by remember { mutableFloatStateOf(closedFallbackPx) }