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

Commit aa14b197 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes Id68b6c37,I16d39d3e into sc-dev

* changes:
  Fix a couple of crashes when taskbar isn't yet attached
  Subtract taskbar size from DeviceProfile#availableHeight
parents 42364510 786dd93f
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -222,7 +222,7 @@ public abstract class BaseQuickstepLauncher extends Launcher
            mTaskbarController.cleanup();
            mTaskbarController.cleanup();
            mTaskbarController = null;
            mTaskbarController = null;
        }
        }
        if (FeatureFlags.ENABLE_TASKBAR.get() && mDeviceProfile.isTablet) {
        if (mDeviceProfile.isTaskbarPresent) {
            TaskbarActivityContext taskbarActivityContext = new TaskbarActivityContext(this);
            TaskbarActivityContext taskbarActivityContext = new TaskbarActivityContext(this);
            mTaskbarController = new TaskbarController(this,
            mTaskbarController = new TaskbarController(this,
                    taskbarActivityContext.getTaskbarContainerView());
                    taskbarActivityContext.getTaskbarContainerView());
+4 −8
Original line number Original line Diff line number Diff line
@@ -89,8 +89,7 @@ public class TaskbarController {
        mTaskbarView = mTaskbarContainerView.findViewById(R.id.taskbar_view);
        mTaskbarView = mTaskbarContainerView.findViewById(R.id.taskbar_view);
        mTaskbarView.construct(createTaskbarViewCallbacks());
        mTaskbarView.construct(createTaskbarViewCallbacks());
        mWindowManager = mLauncher.getWindowManager();
        mWindowManager = mLauncher.getWindowManager();
        mTaskbarSize = new Point(MATCH_PARENT,
        mTaskbarSize = new Point(MATCH_PARENT, mLauncher.getDeviceProfile().taskbarSize);
                mLauncher.getResources().getDimensionPixelSize(R.dimen.taskbar_size));
        mTaskbarStateHandler = mLauncher.getTaskbarStateHandler();
        mTaskbarStateHandler = mLauncher.getTaskbarStateHandler();
        mTaskbarVisibilityController = new TaskbarVisibilityController(mLauncher,
        mTaskbarVisibilityController = new TaskbarVisibilityController(mLauncher,
                createTaskbarVisibilityControllerCallbacks());
                createTaskbarVisibilityControllerCallbacks());
@@ -233,14 +232,10 @@ public class TaskbarController {
    }
    }


    private void removeFromWindowManager() {
    private void removeFromWindowManager() {
        if (mTaskbarContainerView.isAttachedToWindow()) {
        mWindowManager.removeViewImmediate(mTaskbarContainerView);
        mWindowManager.removeViewImmediate(mTaskbarContainerView);
    }
    }
    }


    private void addToWindowManager() {
    private void addToWindowManager() {
        removeFromWindowManager();

        final int gravity = Gravity.BOTTOM;
        final int gravity = Gravity.BOTTOM;


        mWindowLayoutParams = new WindowManager.LayoutParams(
        mWindowLayoutParams = new WindowManager.LayoutParams(
@@ -378,7 +373,8 @@ public class TaskbarController {
     * @return Whether the given View is in the same window as Taskbar.
     * @return Whether the given View is in the same window as Taskbar.
     */
     */
    public boolean isViewInTaskbar(View v) {
    public boolean isViewInTaskbar(View v) {
        return mTaskbarContainerView.getWindowId().equals(v.getWindowId());
        return mTaskbarContainerView.isAttachedToWindow()
                && mTaskbarContainerView.getWindowId().equals(v.getWindowId());
    }
    }


    /**
    /**
+3 −0
Original line number Original line Diff line number Diff line
@@ -260,4 +260,7 @@
    <dimen name="search_settings_icon_vertical_offset">16dp</dimen>
    <dimen name="search_settings_icon_vertical_offset">16dp</dimen>
    <dimen name="search_line_spacing">4dp</dimen>
    <dimen name="search_line_spacing">4dp</dimen>


<!-- Taskbar related (placeholders to compile in Launcher3 without Quickstep) -->
    <dimen name="taskbar_size">0dp</dimen>

</resources>
</resources>
+26 −2
Original line number Original line Diff line number Diff line
@@ -25,9 +25,12 @@ import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.Rect;
import android.view.Surface;
import android.view.Surface;
import android.view.WindowInsets;
import android.view.WindowManager;


import com.android.launcher3.CellLayout.ContainerType;
import com.android.launcher3.CellLayout.ContainerType;
import com.android.launcher3.DevicePaddings.DevicePadding;
import com.android.launcher3.DevicePaddings.DevicePadding;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.graphics.IconShape;
import com.android.launcher3.graphics.IconShape;
import com.android.launcher3.icons.DotRenderer;
import com.android.launcher3.icons.DotRenderer;
import com.android.launcher3.icons.IconNormalizer;
import com.android.launcher3.icons.IconNormalizer;
@@ -149,6 +152,10 @@ public class DeviceProfile {
    public DotRenderer mDotRendererWorkSpace;
    public DotRenderer mDotRendererWorkSpace;
    public DotRenderer mDotRendererAllApps;
    public DotRenderer mDotRendererAllApps;


     // Taskbar
    public boolean isTaskbarPresent;
    public int taskbarSize;

    DeviceProfile(Context context, InvariantDeviceProfile inv, Info info,
    DeviceProfile(Context context, InvariantDeviceProfile inv, Info info,
            Point minSize, Point maxSize, int width, int height, boolean isLandscape,
            Point minSize, Point maxSize, int width, int height, boolean isLandscape,
            boolean isMultiWindowMode, boolean transposeLayoutWithOrientation,
            boolean isMultiWindowMode, boolean transposeLayoutWithOrientation,
@@ -163,12 +170,13 @@ public class DeviceProfile {
        // Determine sizes.
        // Determine sizes.
        widthPx = width;
        widthPx = width;
        heightPx = height;
        heightPx = height;
        int nonFinalAvailableHeightPx;
        if (isLandscape) {
        if (isLandscape) {
            availableWidthPx = maxSize.x;
            availableWidthPx = maxSize.x;
            availableHeightPx = minSize.y;
            nonFinalAvailableHeightPx = minSize.y;
        } else {
        } else {
            availableWidthPx = minSize.x;
            availableWidthPx = minSize.x;
            availableHeightPx = maxSize.y;
            nonFinalAvailableHeightPx = maxSize.y;
        }
        }


        mInfo = info;
        mInfo = info;
@@ -192,6 +200,22 @@ public class DeviceProfile {
                : Configuration.ORIENTATION_PORTRAIT);
                : Configuration.ORIENTATION_PORTRAIT);
        final Resources res = context.getResources();
        final Resources res = context.getResources();


        isTaskbarPresent = isTablet && FeatureFlags.ENABLE_TASKBAR.get();
        if (isTaskbarPresent) {
            // Taskbar will be added later, but provides bottom insets that we should subtract
            // from availableHeightPx.
            taskbarSize = res.getDimensionPixelSize(R.dimen.taskbar_size);
            WindowInsets windowInsets = DisplayController.INSTANCE.get(context).getHolder(mInfo.id)
                    .getDisplayContext().getSystemService(WindowManager.class)
                    .getCurrentWindowMetrics().getWindowInsets();
            int nonOverlappingTaskbarInset =
                    taskbarSize - windowInsets.getSystemWindowInsetBottom();
            if (nonOverlappingTaskbarInset > 0) {
                nonFinalAvailableHeightPx -= nonOverlappingTaskbarInset;
            }
        }
        availableHeightPx = nonFinalAvailableHeightPx;

        edgeMarginPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_edge_margin);
        edgeMarginPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_edge_margin);
        desiredWorkspaceLeftRightMarginPx = isVerticalBarLayout() ? 0 : edgeMarginPx;
        desiredWorkspaceLeftRightMarginPx = isVerticalBarLayout() ? 0 : edgeMarginPx;


+4 −0
Original line number Original line Diff line number Diff line
@@ -197,6 +197,10 @@ public class DisplayController implements DisplayListener {
            return new Info(displayContext, display);
            return new Info(displayContext, display);
        }
        }


        public Context getDisplayContext() {
            return mDisplayContext;
        }

        protected void handleOnChange() {
        protected void handleOnChange() {
            Info oldInfo = mInfo;
            Info oldInfo = mInfo;
            Info newInfo = createInfoForContext(mDisplayContext);
            Info newInfo = createInfoForContext(mDisplayContext);