Using cellX and cellY for comparing position when rank is not available

Bug: 22059402
Change-Id: I69ec2b9b68610e171e76cd968de77aaed669672c
This commit is contained in:
Sunny Goyal
2015-07-06 13:04:02 -07:00
parent bccc43bd8b
commit 1dd0f8bf51
2 changed files with 17 additions and 9 deletions
+17 -1
View File
@@ -61,6 +61,7 @@ import com.android.launcher3.util.Thunk;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* Represents a set of icons chosen by the user or generated by the system.
@@ -362,7 +363,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
void bind(FolderInfo info) {
mInfo = info;
ArrayList<ShortcutInfo> children = info.contents;
Collections.sort(children, Utilities.RANK_COMPARATOR);
Collections.sort(children, ITEM_POS_COMPARATOR);
ArrayList<ShortcutInfo> overflow = mContent.bindItems(children);
@@ -1395,4 +1396,19 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
onDragOver(mDragObject, 1);
}
}
// Compares item position based on rank and position giving priority to the rank.
private static final Comparator<ItemInfo> ITEM_POS_COMPARATOR = new Comparator<ItemInfo>() {
@Override
public int compare(ItemInfo lhs, ItemInfo rhs) {
if (lhs.rank != rhs.rank) {
return lhs.rank - rhs.rank;
} else if (lhs.cellY != rhs.cellY) {
return lhs.cellY - rhs.cellY;
} else {
return lhs.cellX - rhs.cellX;
}
}
};
}