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

Commit 156ff34f authored by Jon Miranda's avatar Jon Miranda
Browse files

Align taskbar so that it does not overlap with nav buttons.

Fixes: 275510698
Bug: 259712417
Test: View device where taskbar should be start aligned
      Update Display size to make everything bigger
      Observe that taskbar icons never overlap nav buttons
Flag: ENABLE_TRANSIENT_TASKBAR true

Change-Id: I246374518f21c4b92d3e02e5582c929a471d9305
parent 1db2fcbd
Loading
Loading
Loading
Loading
+16 −11
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar

    private float mTransientTaskbarAllAppsButtonTranslationXOffset;

    private final boolean mStartAlignTaskbar;
    private final boolean mShouldTryStartAlign;

    public TaskbarView(@NonNull Context context) {
        this(context, null);
@@ -121,7 +121,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
                resources.getDimension(isTransientTaskbar
                        ? R.dimen.transient_taskbar_all_apps_button_translation_x_offset
                        : R.dimen.taskbar_all_apps_button_translation_x_offset);
        mStartAlignTaskbar = mActivityContext.isThreeButtonNav()
        mShouldTryStartAlign = mActivityContext.isThreeButtonNav()
                && resources.getBoolean(R.bool.start_align_taskbar);

        int actualMargin = resources.getDimensionPixelSize(R.dimen.taskbar_icon_spacing);
@@ -353,12 +353,10 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
        }
        int navSpaceNeeded = deviceProfile.hotseatBarEndOffset;
        boolean layoutRtl = isLayoutRtl();
        int iconEnd = right - (right - left - spaceNeeded) / 2;
        boolean needMoreSpaceForNav = layoutRtl ?
                navSpaceNeeded > (iconEnd - spaceNeeded) :
                iconEnd > (right - navSpaceNeeded);
        int centerAlignIconEnd = right - (right - left - spaceNeeded) / 2;
        int iconEnd;

        if (mStartAlignTaskbar) {
        if (mShouldTryStartAlign) {
            // Taskbar is aligned to the start
            int startSpacingPx = deviceProfile.inlineNavButtonsEndSpacingPx;

@@ -367,13 +365,20 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
            } else {
                iconEnd = startSpacingPx + spaceNeeded;
            }
        } else if (needMoreSpaceForNav) {
        } else {
            iconEnd = centerAlignIconEnd;
        }

        boolean needMoreSpaceForNav = layoutRtl
                ? navSpaceNeeded > (iconEnd - spaceNeeded)
                : iconEnd > (right - navSpaceNeeded);
        if (needMoreSpaceForNav) {
            // Add offset to account for nav bar when taskbar is centered
            int offset = layoutRtl
                    ? navSpaceNeeded - (iconEnd - spaceNeeded)
                    : (right - navSpaceNeeded) - iconEnd;
                    ? navSpaceNeeded - (centerAlignIconEnd - spaceNeeded)
                    : (right - navSpaceNeeded) - centerAlignIconEnd;

            iconEnd += offset;
            iconEnd = centerAlignIconEnd + offset;
        }

        sTmpRect.set(mIconLayoutBounds);