mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-10 17:55:39 +02:00
fixed CPElement sorting https://bugs.eclipse.org/bugs/show_bug.cgi?id=66020
This commit is contained in:
parent
905660166d
commit
9d340c85d9
1 changed files with 19 additions and 7 deletions
|
@ -8,6 +8,9 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
|
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.IPathEntry;
|
import org.eclipse.cdt.core.model.IPathEntry;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.jface.viewers.Viewer;
|
import org.eclipse.jface.viewers.Viewer;
|
||||||
|
@ -57,15 +60,24 @@ public class CPElementSorter extends ViewerSorter {
|
||||||
|
|
||||||
public void sort(Viewer viewer, Object[] elements) {
|
public void sort(Viewer viewer, Object[] elements) {
|
||||||
// include paths and symbol definitions must not be sorted
|
// include paths and symbol definitions must not be sorted
|
||||||
if (elements.length > 0 && elements[0] instanceof CPElement) {
|
List sort = new ArrayList(elements.length);
|
||||||
CPElement firstElement = (CPElement)elements[0];
|
List dontSort = new ArrayList(elements.length);
|
||||||
switch (firstElement.getEntryKind()) {
|
for(int i = 0; i < elements.length; i++) {
|
||||||
case IPathEntry.CDT_INCLUDE :
|
if (elements[i] instanceof CPElement) {
|
||||||
case IPathEntry.CDT_MACRO :
|
CPElement element = (CPElement)elements[i];
|
||||||
return;
|
if ( element.getEntryKind() == IPathEntry.CDT_INCLUDE || element.getEntryKind() == IPathEntry.CDT_MACRO) {
|
||||||
|
dontSort.add(elements[i]);
|
||||||
|
} else {
|
||||||
|
sort.add(elements[i]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sort.add(elements[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.sort(viewer, elements);
|
Object[] sorted = new Object[elements.length];
|
||||||
|
System.arraycopy(sort.toArray(), 0, sorted, 0, sort.size());
|
||||||
|
super.sort(viewer, sorted);
|
||||||
|
System.arraycopy(dontSort.toArray(), 0, sorted, sort.size(), dontSort.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue