From 142b9429e1a83b073e8691ef73143f29d55e9be2 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Wed, 24 Dec 2025 13:08:27 +0100 Subject: [PATCH] Restore favorites widget behavior to hide the dock row --- .../widgets/favorites/AppsWidgetVM.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidgetVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidgetVM.kt index 1ec3b7916..37081a3ad 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidgetVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidgetVM.kt @@ -1,10 +1,13 @@ package de.mm20.launcher2.ui.launcher.widgets.favorites +import de.mm20.launcher2.preferences.ui.GridSettings +import de.mm20.launcher2.preferences.ui.UiSettings import de.mm20.launcher2.services.widgets.WidgetsService import de.mm20.launcher2.ui.common.FavoritesVM import de.mm20.launcher2.widgets.AppsWidget import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import org.koin.core.component.inject @@ -12,10 +15,34 @@ class AppsWidgetVM : FavoritesVM() { private val widgetsService: WidgetsService by inject() + private val uiSettings: UiSettings by inject() + private val widget = MutableStateFlow(null) override val tagsExpanded = widget.map { it?.config?.tagsMultiline == true } override val compactTags: Flow = widget.map { it?.config?.compactTags == true } + private val isTopWidget = widgetsService.isFavoritesWidgetFirst() + private val clockWidgetFavSlots = + combine(uiSettings.dock, uiSettings.dockRows, isTopWidget, uiSettings.gridSettings) { (dock, dockRows, isTop, grid) -> + dock as Boolean + dockRows as Int + isTop as Boolean + grid as GridSettings + if (!isTop || !dock) 0 + else { + grid.columnCount * dockRows + } + } + + override val favorites = super.favorites.combine(clockWidgetFavSlots) { favs, slots -> + if (selectedTag.value == null) { + if (favs.lastIndex < slots) emptyList() + else favs.subList(slots, favs.size) + } else { + favs + } + } + override fun setTagsExpanded(expanded: Boolean) { val widget = this.widget.value ?: return widgetsService.updateWidget(