Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db401afc authored by Kshitij's avatar Kshitij Committed by Mohammed Althaf T
Browse files

fix!: Ensure at or above window insets on minus-one

parent 9b507844
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.graphics.Insets
import android.graphics.Rect
import android.os.Bundle
import android.os.UserHandle
@@ -36,6 +37,8 @@ import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.view.WindowInsets
import android.view.WindowManager
import android.widget.Button
import android.widget.FrameLayout
import android.widget.LinearLayout
@@ -64,6 +67,7 @@ import foundation.e.bliss.utils.OnDataChangedListener
import foundation.e.bliss.utils.disableComponent
import foundation.e.bliss.widgets.BlissAppWidgetHost.Companion.REQUEST_CONFIGURE_APPWIDGET
import io.reactivex.disposables.Disposable
import kotlin.math.max
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -163,12 +167,14 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) :
        }

        if (::mWidgetLinearLayout.isInitialized) {

            val windowInsets = getSystemInsets(context)
            mWidgetLinearLayout.apply {
                setPadding(
                    this.paddingLeft,
                    mInsetPadding + (insets.top),
                    mInsetPadding + max(windowInsets.top, insets.top),
                    this.paddingRight,
                    (insets.bottom),
                    max(windowInsets.bottom, insets.bottom),
                )
            }
        }
@@ -693,4 +699,17 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) :
            handleRemoveButtonVisibility(mWidgetAdapter.getWidgets().size)
        }
    }

    companion object {
        @SuppressLint("NewApi")
        fun getSystemInsets(context: Context): Insets {
            val windowInsets =
                context
                    .getSystemService(WindowManager::class.java)
                    ?.currentWindowMetrics
                    ?.windowInsets
                    ?.getInsets(WindowInsets.Type.systemBars())
            return windowInsets ?: Insets.NONE
        }
    }
}