summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/popup/ArrowPopup.java6
-rw-r--r--src/com/android/launcher3/popup/PopupContainerWithArrow.java14
-rw-r--r--src/com/android/launcher3/popup/RemoteActionShortcut.java5
-rw-r--r--src/com/android/launcher3/popup/SystemShortcut.java7
4 files changed, 31 insertions, 1 deletions
diff --git a/src/com/android/launcher3/popup/ArrowPopup.java b/src/com/android/launcher3/popup/ArrowPopup.java
index 0bb5e2afd..ccc15f1dc 100644
--- a/src/com/android/launcher3/popup/ArrowPopup.java
+++ b/src/com/android/launcher3/popup/ArrowPopup.java
@@ -126,6 +126,12 @@ public abstract class ArrowPopup extends AbstractFloatingView {
return (T) view;
}
+ public <T extends View> T inflateAndAdd(int resId, ViewGroup container, int index) {
+ View view = mInflater.inflate(resId, container, false);
+ container.addView(view, index);
+ return (T) view;
+ }
+
/**
* Called when all view inflation and reordering in complete.
*/
diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
index 12319f75e..37a000da2 100644
--- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java
+++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
@@ -391,7 +391,8 @@ public class PopupContainerWithArrow extends ArrowPopup implements DragSource,
}
private void initializeSystemShortcut(int resId, ViewGroup container, SystemShortcut info) {
- View view = inflateAndAdd(resId, container);
+ View view = inflateAndAdd(
+ resId, container, getInsertIndexForSystemShortcut(container, info));
if (view instanceof DeepShortcutView) {
// Expanded system shortcut, with both icon and text shown on white background.
final DeepShortcutView shortcutView = (DeepShortcutView) view;
@@ -406,6 +407,17 @@ public class PopupContainerWithArrow extends ArrowPopup implements DragSource,
}
/**
+ * Returns an index for inserting a shortcut into a container.
+ */
+ private int getInsertIndexForSystemShortcut(ViewGroup container, SystemShortcut shortcut) {
+ final View separator = container.findViewById(R.id.separator);
+
+ return separator != null && shortcut.isLeftGroup() ?
+ container.indexOfChild(separator) :
+ container.getChildCount();
+ }
+
+ /**
* Determines when the deferred drag should be started.
*
* Current behavior:
diff --git a/src/com/android/launcher3/popup/RemoteActionShortcut.java b/src/com/android/launcher3/popup/RemoteActionShortcut.java
index c76fb9651..3e124290a 100644
--- a/src/com/android/launcher3/popup/RemoteActionShortcut.java
+++ b/src/com/android/launcher3/popup/RemoteActionShortcut.java
@@ -76,4 +76,9 @@ public class RemoteActionShortcut extends SystemShortcut<Launcher> {
LauncherLogProto.ControlType.REMOTE_ACTION_SHORTCUT, view);
};
}
+
+ @Override
+ public boolean isLeftGroup() {
+ return true;
+ }
}
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
index f9a200793..fdc1b39d7 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -71,6 +71,13 @@ public abstract class SystemShortcut<T extends BaseDraggingActivity> extends Ite
mAccessibilityActionId = other.mAccessibilityActionId;
}
+ /**
+ * Should be in the left group of icons in app's context menu header.
+ */
+ public boolean isLeftGroup() {
+ return false;
+ }
+
public void setIconAndLabelFor(View iconView, TextView labelView) {
if (mIcon != null) {
mIcon.loadDrawableAsync(iconView.getContext(),