diff options
-rw-r--r-- | plugingui/listboxbasic.cc | 29 |
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; + } } } } |