From 1ec7d97ea100c7e491e26f19bf20c523e2d5ca21 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Fri, 2 Sep 2022 16:41:20 +0200 Subject: [PATCH] Fix 3rd party widget sizing --- .../widgets/external/ExternalWidget.kt | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/external/ExternalWidget.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/external/ExternalWidget.kt index a48ce5c8..1a852e42 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/external/ExternalWidget.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/external/ExternalWidget.kt @@ -3,11 +3,13 @@ package de.mm20.launcher2.ui.launcher.widgets.external import android.appwidget.AppWidgetHost import android.appwidget.AppWidgetManager import android.os.Bundle +import android.util.Log import android.view.View import android.view.ViewGroup import android.widget.ListView import android.widget.ScrollView import androidx.appcompat.app.AppCompatActivity +import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.runtime.Composable @@ -15,11 +17,13 @@ import androidx.compose.runtime.key import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import androidx.core.view.doOnNextLayout import androidx.core.view.iterator import de.mm20.launcher2.ui.ktx.toPixels +import kotlin.math.roundToInt @Composable fun ExternalWidget( @@ -32,19 +36,29 @@ fun ExternalWidget( val widgetInfo = remember(widgetId) { AppWidgetManager.getInstance(context).getAppWidgetInfo(widgetId) } - val viewHeightPx = height.dp.toPixels() - key(widgetId) { - AndroidView( - modifier = modifier.fillMaxWidth().height(height.dp), - factory = { - val view = appWidgetHost.createView(it.applicationContext, widgetId, widgetInfo) - enableNestedScroll(view) - return@AndroidView view - }, - update = { - it.updateAppWidgetSize(null, 0, 0, it.width, height) - } - ) + BoxWithConstraints { + val maxWidth = maxWidth + key(widgetId) { + AndroidView( + modifier = modifier + .fillMaxWidth() + .height(height.dp), + factory = { + val view = appWidgetHost.createView(it.applicationContext, widgetId, widgetInfo) + enableNestedScroll(view) + return@AndroidView view + }, + update = { + it.updateAppWidgetSize( + null, + maxWidth.value.roundToInt(), + height, + maxWidth.value.roundToInt(), + height, + ) + } + ) + } } }