widgets: dont use system padding in size compat

Don't take the app widget host padding into account when trying to
calculate the widget sizing.

Doing such produces bad results, at least on my devices. At least, it
does now for some reason.
This commit is contained in:
OxygenCobalt 2022-07-17 16:03:39 -06:00
parent 7f07764b68
commit 51b9b0e734
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
3 changed files with 8 additions and 20 deletions

View file

@ -12,6 +12,7 @@ at the cost of longer loading times
#### What's Fixed #### What's Fixed
- Fixed default material theme being used before app shows up - Fixed default material theme being used before app shows up
- Fixed shuffle shortcut and file opening not working on startup on some devices
#### What's Changed #### What's Changed
- Updated music hashing (Will wipe playback state) - Updated music hashing (Will wipe playback state)

View file

@ -67,19 +67,17 @@ class MainActivity : AppCompatActivity() {
startService(Intent(this, IndexerService::class.java)) startService(Intent(this, IndexerService::class.java))
startService(Intent(this, PlaybackService::class.java)) startService(Intent(this, PlaybackService::class.java))
logD("YOU FUCKING RETARD DO BASCIS ${intent?.action}") if (!startIntentDelayedAction(intent)) {
if (!intentToDelayedAction(intent)) {
playbackModel.startDelayedAction(PlaybackViewModel.DelayedAction.RestoreState) playbackModel.startDelayedAction(PlaybackViewModel.DelayedAction.RestoreState)
} }
} }
override fun onNewIntent(intent: Intent?) { override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent) super.onNewIntent(intent)
intentToDelayedAction(intent) startIntentDelayedAction(intent)
} }
private fun intentToDelayedAction(intent: Intent?): Boolean { private fun startIntentDelayedAction(intent: Intent?): Boolean {
if (intent == null) { if (intent == null) {
return false return false
} }

View file

@ -61,8 +61,8 @@ class WidgetProvider : AppWidgetProvider() {
SizeF(180f, 100f) to createThinWidget(context, state), SizeF(180f, 100f) to createThinWidget(context, state),
SizeF(180f, 152f) to createSmallWidget(context, state), SizeF(180f, 152f) to createSmallWidget(context, state),
SizeF(272f, 152f) to createWideWidget(context, state), SizeF(272f, 152f) to createWideWidget(context, state),
SizeF(180f, 270f) to createMediumWidget(context, state), SizeF(180f, 272f) to createMediumWidget(context, state),
SizeF(272f, 270f) to createLargeWidget(context, state)) SizeF(272f, 272f) to createLargeWidget(context, state))
AppWidgetManager.getInstance(context).applyViewsCompat(context, views) AppWidgetManager.getInstance(context).applyViewsCompat(context, views)
} }
@ -134,19 +134,11 @@ class WidgetProvider : AppWidgetProvider() {
// and do this for each. // and do this for each.
val ids = getAppWidgetIds(name) val ids = getAppWidgetIds(name)
// Most of the major launchers seem to provide widget sizes that don't include
// padding. Query for the padding here so we can get a sane result later on.
val padding = AppWidgetHostView.getDefaultPaddingForWidget(context, name, null)
val density = context.resources.displayMetrics.density
val padW = ((padding.left + padding.right) / density).toInt()
val padH = ((padding.top + padding.bottom) / density).toInt()
for (id in ids) { for (id in ids) {
val options = getAppWidgetOptions(id) val options = getAppWidgetOptions(id)
var width: Int val width: Int
var height: Int val height: Int
// Landscape/Portrait modes use different dimen bounds // Landscape/Portrait modes use different dimen bounds
if (context.isLandscape) { if (context.isLandscape) {
@ -157,9 +149,6 @@ class WidgetProvider : AppWidgetProvider() {
height = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT) height = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)
} }
height += padH
width += padW
logD("Assuming true widget dimens are ${width}x$height") logD("Assuming true widget dimens are ${width}x$height")
// Find the layout with the greatest area that fits entirely within // Find the layout with the greatest area that fits entirely within