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

Commit 6022fede authored by Kshitij's avatar Kshitij
Browse files

Merge branch '2838os-u-minusoneinset' into 'v1-u'

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

See merge request e/os/BlissLauncher3!84
parents 13955931 cdd2cb2d
Loading
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
@@ -65,6 +68,7 @@ import foundation.e.bliss.utils.disableComponent
import foundation.e.bliss.widgets.BlissAppWidgetHost.Companion.REQUEST_CONFIGURE_APPWIDGET
import foundation.e.bliss.widgets.DefaultWidgets.defaultWidgets
import io.reactivex.rxjava3.disposables.Disposable
import kotlin.math.max
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -164,12 +168,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),
                )
            }
        }
@@ -682,4 +688,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
        }
    }
}