(svn r27063) -Fix [FS#6172]: Some lists did not use natural string sorting.

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
frosch 10 years ago
parent c00e48eedb
commit 861b9bc85e

@ -715,7 +715,7 @@ static int CDECL GRFSorter(GRFConfig * const *p1, GRFConfig * const *p2)
const GRFConfig *c1 = *p1; const GRFConfig *c1 = *p1;
const GRFConfig *c2 = *p2; const GRFConfig *c2 = *p2;
return strcasecmp(c1->GetName(), c2->GetName()); return strnatcmp(c1->GetName(), c2->GetName());
} }
/** /**

@ -19,6 +19,7 @@
#include "cargotype.h" #include "cargotype.h"
#include "station_gui.h" #include "station_gui.h"
#include "strings_func.h" #include "strings_func.h"
#include "string_func.h"
#include "window_func.h" #include "window_func.h"
#include "viewport_func.h" #include "viewport_func.h"
#include "widgets/dropdown_func.h" #include "widgets/dropdown_func.h"
@ -222,7 +223,9 @@ protected:
GetString(buf_cache, STR_STATION_NAME, lastof(buf_cache)); GetString(buf_cache, STR_STATION_NAME, lastof(buf_cache));
} }
return strcmp(buf, buf_cache); int r = strnatcmp(buf, buf_cache); // Sort by name (natural sorting).
if (r == 0) return (*a)->index - (*b)->index;
return r;
} }
/** Sort stations by their type */ /** Sort stations by their type */
@ -1186,7 +1189,7 @@ bool CargoSorter::SortStation(StationID st1, StationID st2) const
SetDParam(0, st2); SetDParam(0, st2);
GetString(buf2, STR_STATION_NAME, lastof(buf2)); GetString(buf2, STR_STATION_NAME, lastof(buf2));
int res = strcmp(buf1, buf2); int res = strnatcmp(buf1, buf2); // Sort by name (natural sorting).
if (res == 0) { if (res == 0) {
return this->SortId(st1, st2); return this->SortId(st1, st2);
} else { } else {

@ -1864,7 +1864,7 @@ int CDECL StringIDSorter(const StringID *a, const StringID *b)
GetString(stra, *a, lastof(stra)); GetString(stra, *a, lastof(stra));
GetString(strb, *b, lastof(strb)); GetString(strb, *b, lastof(strb));
return strcmp(stra, strb); return strnatcmp(stra, strb);
} }
/** /**

Loading…
Cancel
Save