From 4dff3b5ee6ab01ad46d65fae037eb957d0791e4b Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 30 Aug 2026 16:53:22 +0200 Subject: [PATCH] make dropdown menus scrollable fix #1906 --- .../main/java/de/mm20/launcher2/ui/common/IconPicker.kt | 5 ++++- .../launcher2/ui/component/OutlinedTagsInputField.kt | 3 +++ .../main/java/de/mm20/launcher2/ui/component/Toolbar.kt | 9 ++++++--- .../launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt | 3 +++ .../launcher2/ui/launcher/sheets/EditFavoritesSheet.kt | 3 +++ .../ui/launcher/widgets/calendar/CalendarWidget.kt | 4 ++++ 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/common/IconPicker.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/common/IconPicker.kt index 8ae4e3813..c1cba68e6 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/common/IconPicker.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/common/IconPicker.kt @@ -13,6 +13,8 @@ import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.CircularProgressIndicator @@ -185,7 +187,8 @@ fun IconPicker( ) } DropdownMenuPopup( - + modifier = Modifier + .verticalScroll(rememberScrollState()), expanded = showIconPackFilter, onDismissRequest = { showIconPackFilter = false } ) { diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/component/OutlinedTagsInputField.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/component/OutlinedTagsInputField.kt index 37111730c..7ad9a475d 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/component/OutlinedTagsInputField.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/component/OutlinedTagsInputField.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.DropdownMenuGroup import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuPopup @@ -191,6 +192,8 @@ fun OutlinedTagsInputField( if (completions.isNotEmpty()) { Box { DropdownMenuPopup( + modifier = Modifier + .verticalScroll(rememberScrollState()), expanded = true, onDismissRequest = { completions = emptyList() }, properties = PopupProperties(focusable = false) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/component/Toolbar.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/component/Toolbar.kt index a10cdbb44..b28e038b6 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/component/Toolbar.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/component/Toolbar.kt @@ -8,7 +8,8 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.DropdownMenu +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.DropdownMenuGroup import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuPopup @@ -67,10 +68,12 @@ fun Icons(actions: List, slots: Int) { DropdownMenuPopup( expanded = showMenu, onDismissRequest = { showMenu = false }, - modifier = Modifier.animateContentSize() + modifier = Modifier + .verticalScroll(rememberScrollState()), ) { DropdownMenuGroup( - shapes = MenuDefaults.groupShapes() + shapes = MenuDefaults.groupShapes(), + modifier = Modifier.animateContentSize() ) { OverflowMenuItems(items = actions.subList(slots - 1, actions.size)) { showMenu = false diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt index 345229e26..86d224336 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt @@ -392,6 +392,9 @@ fun ColumnScope.ConfigureFavoritesWidget( Text(stringResource(R.string.select_tag)) } DropdownMenuPopup( + modifier = Modifier + .verticalScroll(rememberScrollState()) + .padding(vertical = 8.dp), expanded = showAddMenu, onDismissRequest = { showAddMenu = false }) { if (availableTags.isNotEmpty()) { diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditFavoritesSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditFavoritesSheet.kt index 9b75af8a3..1b727ff5a 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditFavoritesSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditFavoritesSheet.kt @@ -28,6 +28,8 @@ import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.rememberLazyGridState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.DropdownMenuGroup import androidx.compose.material3.DropdownMenuItem @@ -494,6 +496,7 @@ fun ReorderFavoritesGrid(viewModel: EditFavoritesSheetVM, paddingValues: Padding ) } DropdownMenuPopup( + modifier = Modifier.verticalScroll(rememberScrollState()), expanded = showAddMenu, onDismissRequest = { showAddMenu = false }) { if (availableTags.isNotEmpty()) { diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt index 331b8128d..d605ad729 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt @@ -19,6 +19,8 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.DropdownMenuGroup import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuPopup @@ -110,6 +112,8 @@ fun CalendarWidget( ) } DropdownMenuPopup( + modifier = Modifier + .verticalScroll(rememberScrollState()), expanded = showDropdown, onDismissRequest = { showDropdown = false }) { val availableDates = viewModel.availableDates