Comparing widget sizes when sorting if the labels are same

Bug: 21441837
Change-Id: Ib0e6d3b84389f900264a0d696d22057426973719
This commit is contained in:
Sunny Goyal
2016-08-18 17:01:24 -07:00
parent 8f90dcff37
commit a1503f47aa

View File

@@ -68,6 +68,17 @@ public class WidgetItem extends ComponentKey implements Comparable<WidgetItem> {
return thisWorkProfile ? 1 : -1;
}
return sCollator.compare(label, another.label);
int labelCompare = sCollator.compare(label, another.label);
if (labelCompare != 0) {
return labelCompare;
}
// If the label is same, put the smaller widget before the larger widget. If the area is
// also same, put the widget with smaller height before.
int thisArea = spanX * spanY;
int otherArea = another.spanX * another.spanY;
return thisArea == otherArea
? Integer.compare(spanY, another.spanY)
: Integer.compare(thisArea, otherArea);
}
}