### Eclipse Workspace Patch 1.0 #P org.eclipse.ui.workbench Index: Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java,v retrieving revision 1.58 diff -u -r1.58 NewKeysPreferencePage.java --- Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java 7 May 2007 22:11:36 -0000 1.58 +++ Eclipse UI/org/eclipse/ui/internal/keys/NewKeysPreferencePage.java 8 May 2007 13:39:22 -0000 @@ -715,6 +715,8 @@ private int sortColumn = 0; + private int lastSortColumn = 0; + private boolean ascending = true; public final int category(final Object element) { @@ -750,6 +752,9 @@ String e2p = tableProvider.getColumnText(b, sortColumn); if (e1p != null && e2p != null) { int result = getComparator().compare(e1p, e2p); + if (result == 0 && sortColumn != lastSortColumn) { + result = secondaryCompare(tableProvider, a, b); + } return ascending ? result : (-1) * result; } @@ -757,6 +762,18 @@ return super.compare(viewer, a, b); } + private final int secondaryCompare( + final ITableLabelProvider tableProvider, final Object a, + final Object b) { + int result = 0; + String e1p = tableProvider.getColumnText(a, lastSortColumn); + String e2p = tableProvider.getColumnText(b, lastSortColumn); + if (e1p != null && e2p != null) { + result = getComparator().compare(e1p, e2p); + } + return result; + } + /** * @return Returns the sortColumn. */ @@ -769,6 +786,10 @@ * The sortColumn to set. */ public void setSortColumn(int sortColumn) { + lastSortColumn = this.sortColumn; + if (lastSortColumn != sortColumn) { + ascending = true; + } this.sortColumn = sortColumn; }