diff options
-rw-r--r-- | src/station_gui.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/station_gui.cpp b/src/station_gui.cpp index 56b05ee0e..c4f778e1a 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -266,6 +266,8 @@ static void PlayerStationsWndProc(Window *w, WindowEvent *e) const PlayerID owner = (PlayerID)w->window_number; static byte facilities = FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK; static uint16 cargo_filter = CARGO_ALL_SELECTED; + static Listing station_sort = {0, 0}; + plstations_d *sl = &WP(w, plstations_d); switch (e->event) { @@ -283,7 +285,8 @@ static void PlayerStationsWndProc(Window *w, WindowEvent *e) sl->sort_list = NULL; sl->flags = SL_REBUILD; - sl->sort_type = 0; + sl->sort_type = station_sort.criteria; + if (station_sort.order) sl->flags |= SL_ORDER; sl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS; break; } @@ -436,6 +439,7 @@ static void PlayerStationsWndProc(Window *w, WindowEvent *e) } case STATIONLIST_WIDGET_SORTBY: /*flip sorting method asc/desc*/ sl->flags ^= SL_ORDER; //DESC-flag + station_sort.order = GB(sl->flags, 0, 1); sl->flags |= SL_RESORT; w->flags4 |= 5 << WF_TIMEOUT_SHL; LowerWindowWidget(w, STATIONLIST_WIDGET_SORTBY); @@ -471,6 +475,7 @@ static void PlayerStationsWndProc(Window *w, WindowEvent *e) if (sl->sort_type != e->we.dropdown.index) { // value has changed -> resort sl->sort_type = e->we.dropdown.index; + station_sort.criteria = sl->sort_type; sl->flags |= SL_RESORT; } SetWindowDirty(w); |