Skip to content

Commit 4dd4c62

Browse files
maniac103Gerrit Code Review
authored andcommitted
Merge "ActionBar: Compute required items prior to optional items" into cm-10.1
2 parents 018d070 + 2dd13f2 commit 4dd4c62

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

core/java/com/android/internal/view/menu/ActionMenuPresenter.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import android.widget.ImageButton;
3535

3636
import java.util.ArrayList;
37+
import java.util.Collections;
38+
import java.util.Comparator;
3739

3840
/**
3941
* MenuPresenter for building action menus as seen in the action bar and action modes.
@@ -351,7 +353,27 @@ public boolean isOverflowReserved() {
351353
}
352354

353355
public boolean flagActionItems() {
354-
final ArrayList<MenuItemImpl> visibleItems = mMenu.getVisibleItems();
356+
// Items must be sorted always in base to his showAsAction type
357+
// always -> ifRoom -> Others
358+
// Create an internal sorted array based in this priority (items must keep
359+
// his original order)
360+
final ArrayList<MenuItemImpl> visibleItems =
361+
new ArrayList<MenuItemImpl>(mMenu.getVisibleItems());
362+
Collections.sort(visibleItems, new Comparator<MenuItemImpl>() {
363+
@Override
364+
public int compare(MenuItemImpl lhs, MenuItemImpl rhs) {
365+
boolean lhsRequires = lhs.requiresActionButton();
366+
boolean lhsRequest = lhs.requestsActionButton();
367+
boolean rhsRequires = rhs.requiresActionButton();
368+
boolean rhsRequest = rhs.requestsActionButton();
369+
if (lhsRequires && rhsRequires) return 0;
370+
if (lhsRequires) return -1;
371+
if (rhsRequires) return 1;
372+
if (lhsRequest && rhsRequest) return 0;
373+
if (lhsRequest) return -1;
374+
return 1;
375+
}
376+
});
355377
final int itemsSize = visibleItems.size();
356378
int maxActions = mMaxItems;
357379
int widthLimit = mActionItemWidthLimit;

0 commit comments

Comments
 (0)