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

Commit c1ec2d42 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Open taskMenu based on TaskIdAttributeContainer

* We were always passing in the same task no matter
which task icon was clicked.
* Use TaskIdAttributeContainer to associate
IconViews with their respective tasks

Fixes: 206154715
Test: Correct menu opens for split and fullscreen
tasks

Change-Id: I79a32541ea9ebae9ad78ad933f55212d0bc64b56
parent a37f8baa
Loading
Loading
Loading
Loading
+1 −9
Original line number Original line Diff line number Diff line
@@ -79,7 +79,7 @@ public class GroupedTaskView extends TaskView {
        mSecondaryTask = secondary;
        mSecondaryTask = secondary;
        mTaskIdContainer[1] = secondary.key.id;
        mTaskIdContainer[1] = secondary.key.id;
        mTaskIdAttributeContainer[1] = new TaskIdAttributeContainer(secondary, mSnapshotView2,
        mTaskIdAttributeContainer[1] = new TaskIdAttributeContainer(secondary, mSnapshotView2,
                STAGE_POSITION_BOTTOM_OR_RIGHT);
                mIconView2, STAGE_POSITION_BOTTOM_OR_RIGHT);
        mTaskIdAttributeContainer[0].setStagePosition(STAGE_POSITION_TOP_OR_LEFT);
        mTaskIdAttributeContainer[0].setStagePosition(STAGE_POSITION_TOP_OR_LEFT);
        mSnapshotView2.bind(secondary);
        mSnapshotView2.bind(secondary);
        mSplitBoundsConfig = splitBoundsConfig;
        mSplitBoundsConfig = splitBoundsConfig;
@@ -120,14 +120,6 @@ public class GroupedTaskView extends TaskView {
        }
        }
    }
    }


    protected boolean showTaskMenuWithContainer(IconView iconView) {
        if (mActivity.getDeviceProfile().overviewShowAsGrid) {
            return TaskMenuViewWithArrow.Companion.showForTask(mTaskIdAttributeContainer[0]);
        } else {
            return TaskMenuView.showForTask(mTaskIdAttributeContainer[0]);
        }
    }

    public void updateSplitBoundsConfig(StagedSplitBounds stagedSplitBounds) {
    public void updateSplitBoundsConfig(StagedSplitBounds stagedSplitBounds) {
        mSplitBoundsConfig = stagedSplitBounds;
        mSplitBoundsConfig = stagedSplitBounds;
        invalidate();
        invalidate();
+3 −4
Original line number Original line Diff line number Diff line
@@ -61,14 +61,13 @@ class TaskMenuViewWithArrow<T : BaseDraggingActivity> : ArrowPopup<T> {


    private val menuWidth = context.resources.getDimensionPixelSize(R.dimen.task_menu_width_grid)
    private val menuWidth = context.resources.getDimensionPixelSize(R.dimen.task_menu_width_grid)


    private lateinit var taskView: TaskView
    private lateinit var optionLayout: LinearLayout
    private lateinit var optionLayout: LinearLayout
    private lateinit var taskContainer: TaskIdAttributeContainer
    private lateinit var taskContainer: TaskIdAttributeContainer


    override fun isOfType(type: Int): Boolean = type and TYPE_TASK_MENU != 0
    override fun isOfType(type: Int): Boolean = type and TYPE_TASK_MENU != 0


    override fun getTargetObjectLocation(outPos: Rect?) {
    override fun getTargetObjectLocation(outPos: Rect?) {
        popupContainer.getDescendantRectRelativeToSelf(taskView.iconView, outPos)
        popupContainer.getDescendantRectRelativeToSelf(taskContainer.iconView, outPos)
    }
    }


    override fun onControllerInterceptTouchEvent(ev: MotionEvent?): Boolean {
    override fun onControllerInterceptTouchEvent(ev: MotionEvent?): Boolean {
@@ -91,7 +90,6 @@ class TaskMenuViewWithArrow<T : BaseDraggingActivity> : ArrowPopup<T> {
            return false
            return false
        }
        }


        taskView = taskContainer.taskView
        this.taskContainer = taskContainer
        this.taskContainer = taskContainer
        if (!populateMenu()) return false
        if (!populateMenu()) return false
        show()
        show()
@@ -111,7 +109,8 @@ class TaskMenuViewWithArrow<T : BaseDraggingActivity> : ArrowPopup<T> {
    private fun addMenuOptions() {
    private fun addMenuOptions() {
        // Add the options
        // Add the options
        TaskOverlayFactory
        TaskOverlayFactory
            .getEnabledShortcuts(taskView, mActivityContext.deviceProfile, taskContainer)
            .getEnabledShortcuts(taskContainer.taskView, mActivityContext.deviceProfile,
                    taskContainer)
            .forEach { this.addMenuOption(it) }
            .forEach { this.addMenuOption(it) }


        // Add the spaces between items
        // Add the spaces between items
+12 −4
Original line number Original line Diff line number Diff line
@@ -539,7 +539,7 @@ public class TaskView extends FrameLayout implements Reusable {
        mTask = task;
        mTask = task;
        mTaskIdContainer[0] = mTask.key.id;
        mTaskIdContainer[0] = mTask.key.id;
        mTaskIdAttributeContainer[0] = new TaskIdAttributeContainer(task, mSnapshotView,
        mTaskIdAttributeContainer[0] = new TaskIdAttributeContainer(task, mSnapshotView,
                STAGE_POSITION_UNDEFINED);
                mIconView, STAGE_POSITION_UNDEFINED);
        mSnapshotView.bind(task);
        mSnapshotView.bind(task);
        setOrientationState(orientedState);
        setOrientationState(orientedState);
    }
    }
@@ -828,10 +828,12 @@ public class TaskView extends FrameLayout implements Reusable {
    }
    }


    protected boolean showTaskMenuWithContainer(IconView iconView) {
    protected boolean showTaskMenuWithContainer(IconView iconView) {
        TaskIdAttributeContainer menuContainer =
                mTaskIdAttributeContainer[iconView == mIconView ? 0 : 1];
        if (mActivity.getDeviceProfile().overviewShowAsGrid) {
        if (mActivity.getDeviceProfile().overviewShowAsGrid) {
            return TaskMenuViewWithArrow.Companion.showForTask(mTaskIdAttributeContainer[0]);
            return TaskMenuViewWithArrow.Companion.showForTask(menuContainer);
        } else {
        } else {
            return TaskMenuView.showForTask(mTaskIdAttributeContainer[0]);
            return TaskMenuView.showForTask(menuContainer);
        }
        }
    }
    }


@@ -1553,13 +1555,15 @@ public class TaskView extends FrameLayout implements Reusable {
    public class TaskIdAttributeContainer {
    public class TaskIdAttributeContainer {
        private final TaskThumbnailView mThumbnailView;
        private final TaskThumbnailView mThumbnailView;
        private final Task mTask;
        private final Task mTask;
        private final IconView mIconView;
        /** Defaults to STAGE_POSITION_UNDEFINED if in not a split screen task view */
        /** Defaults to STAGE_POSITION_UNDEFINED if in not a split screen task view */
        private @SplitConfigurationOptions.StagePosition int mStagePosition;
        private @SplitConfigurationOptions.StagePosition int mStagePosition;


        public TaskIdAttributeContainer(Task task, TaskThumbnailView thumbnailView,
        public TaskIdAttributeContainer(Task task, TaskThumbnailView thumbnailView,
                int stagePosition) {
                IconView iconView, int stagePosition) {
            this.mTask = task;
            this.mTask = task;
            this.mThumbnailView = thumbnailView;
            this.mThumbnailView = thumbnailView;
            this.mIconView = iconView;
            this.mStagePosition = stagePosition;
            this.mStagePosition = stagePosition;
        }
        }


@@ -1579,6 +1583,10 @@ public class TaskView extends FrameLayout implements Reusable {
            return TaskView.this;
            return TaskView.this;
        }
        }


        public IconView getIconView() {
            return mIconView;
        }

        public int getStagePosition() {
        public int getStagePosition() {
            return mStagePosition;
            return mStagePosition;
        }
        }