properly unregister some widgets for changes

This commit is contained in:
tibbi 2022-10-01 09:58:16 +02:00
parent 10373af40d
commit 72c6801bc0

View File

@ -91,13 +91,9 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
fun removeAppIcon(item: HomeScreenGridItem) { fun removeAppIcon(item: HomeScreenGridItem) {
ensureBackgroundThread { ensureBackgroundThread {
context.homeScreenGridItemsDB.deleteById(item.id!!) removeItemFromHomeScreen(item)
if (item.type == ITEM_TYPE_WIDGET) { post {
appWidgetHost.deleteAppWidgetId(item.widgetId) removeView(widgetViews.firstOrNull { it.tag == item.widgetId })
post {
removeView(widgetViews.firstOrNull { it.tag == item.widgetId })
}
} }
gridItems.removeIf { it.id == item.id } gridItems.removeIf { it.id == item.id }
@ -105,6 +101,18 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
} }
} }
private fun removeItemFromHomeScreen(item: HomeScreenGridItem) {
ensureBackgroundThread {
if (item.id != null) {
context.homeScreenGridItemsDB.deleteById(item.id!!)
}
if (item.type == ITEM_TYPE_WIDGET) {
appWidgetHost.deleteAppWidgetId(item.widgetId)
}
}
}
fun itemDraggingStarted(draggedGridItem: HomeScreenGridItem) { fun itemDraggingStarted(draggedGridItem: HomeScreenGridItem) {
draggedItem = draggedGridItem draggedItem = draggedGridItem
if (draggedItem!!.drawable == null) { if (draggedItem!!.drawable == null) {
@ -288,19 +296,15 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
activity.handleWidgetConfigureScreen(appWidgetHost, appWidgetId) { success -> activity.handleWidgetConfigureScreen(appWidgetHost, appWidgetId) { success ->
if (success) { if (success) {
placeAppWidget(appWidgetId, appWidgetProviderInfo, item) placeAppWidget(appWidgetId, appWidgetProviderInfo, item)
} else if (item.id != null) { } else {
ensureBackgroundThread { removeItemFromHomeScreen(item)
context.homeScreenGridItemsDB.deleteById(item.id!!)
}
} }
} }
} else { } else {
placeAppWidget(appWidgetId, appWidgetProviderInfo, item) placeAppWidget(appWidgetId, appWidgetProviderInfo, item)
} }
} else if (item.id != null) { } else {
ensureBackgroundThread { removeItemFromHomeScreen(item)
context.homeScreenGridItemsDB.deleteById(item.id!!)
}
} }
} }
} }