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

Commit 1e18e075 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Merge branch '2277-s-hwbuttons' into 'v1-s'

feat: Fix hotseat for hw button devices

See merge request e/os/BlissLauncher3!36
parents 636a10ee 3513fe2b
Loading
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.Surface;

import com.android.launcher3.CellLayout.ContainerType;
@@ -39,7 +40,6 @@ import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.graphics.IconShape;
import com.android.launcher3.icons.DotRenderer;
import com.android.launcher3.icons.GraphicsUtils;
import com.android.launcher3.icons.IconNormalizer;
import com.android.launcher3.uioverrides.ApiWrapper;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.DisplayController.Info;
@@ -51,6 +51,7 @@ import foundation.e.bliss.multimode.MultiModeController;
import lineageos.providers.LineageSettings;

import java.io.PrintWriter;
import java.lang.reflect.Method;

@SuppressLint("NewApi")
public class DeviceProfile {
@@ -952,10 +953,10 @@ public class DeviceProfile {
            SysUINavigationMode.Mode mode = SysUINavigationMode.getMode(context);

            int bottomPadding;
            if (mode == SysUINavigationMode.Mode.NO_BUTTON) {
            if (mode == SysUINavigationMode.Mode.NO_BUTTON || noNavigationBar()) {
                bottomPadding = verticalPadding;
                if (LineageSettings.System.getInt(context.getContentResolver(),
                        LineageSettings.System.NAVIGATION_BAR_HINT, 0) != 1) {
                        LineageSettings.System.NAVIGATION_BAR_HINT, 0) != 1 || noNavigationBar()) {
                    bottomPadding -= hotseatBarTopPaddingPx / 2;
                    verticalPadding += hotseatBarTopPaddingPx + (hotseatBarTopPaddingPx / 2);
                }
@@ -975,6 +976,19 @@ public class DeviceProfile {
        return mHotseatPadding;
    }

    public static boolean noNavigationBar() {
        boolean hasNavigationBar = true;
        try {
            Class<?> windowManagerGlobalClass = Class.forName("android.view.WindowManagerGlobal");
            Method getWindowManagerServiceMethod = windowManagerGlobalClass.getDeclaredMethod("getWindowManagerService");
            Object iWindowManager = getWindowManagerServiceMethod.invoke(null);
            Class<?> iWindowManagerClass = Class.forName("android.view.IWindowManager");
            Method hasNavigationBarMethod = iWindowManagerClass.getDeclaredMethod("hasNavigationBar", int.class);
            hasNavigationBar = (boolean) hasNavigationBarMethod.invoke(iWindowManager, Display.DEFAULT_DISPLAY);
        } catch (Exception ignored) {}
        return !hasNavigationBar;
    }

    /**
     * Returns the number of pixels the QSB is translated from the bottom of the screen.
     */