summaryrefslogtreecommitdiff
path: root/plugingui
diff options
context:
space:
mode:
Diffstat (limited to 'plugingui')
-rw-r--r--plugingui/listboxbasic.cc29
1 files changed, 19 insertions, 10 deletions
diff --git a/plugingui/listboxbasic.cc b/plugingui/listboxbasic.cc
index 3d903a4..03fd0c4 100644
--- a/plugingui/listboxbasic.cc
+++ b/plugingui/listboxbasic.cc
@@ -92,16 +92,25 @@ void GUI::ListBoxBasic::addItems(std::vector<GUI::ListBoxBasic::Item> &is)
}
// sort
- for(int x = 0; x < (int)items.size() - 1; x++) {
- for(int y = 0; y < (int)items.size() - 1; y++) {
- if(items[x].name < items[y].name) {
-
- if(x == selected) setSelection(y);
- else if(selected == y) setSelection(x);
-
- GUI::ListBoxBasic::Item tmp = items[x];
- items[x] = items[y];
- items[y] = tmp;
+ if(items.size() == 2) {
+ DEBUG(list, "Sorting special case with two items\n");
+ if(items[0].name > items[1].name) {
+ GUI::ListBoxBasic::Item tmp = items[0];
+ items[0] = items[1];
+ items[1] = tmp;
+ }
+ }
+ else {
+ for(int x = 0; x < (int)items.size() - 1; x++) {
+ for(int y = 0; y < (int)items.size() - 1; y++) {
+ if(items[x].name < items[y].name) {
+ if(x == selected) setSelection(y);
+ else if(selected == y) setSelection(x);
+
+ GUI::ListBoxBasic::Item tmp = items[x];
+ items[x] = items[y];
+ items[y] = tmp;
+ }
}
}
}