From 87015f5b6395f15a624f67e25dce10fe52a12c81 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 17 May 2008 13:01:30 +0000 Subject: [PATCH] (svn r13140) -Codechange: move the gui-list-sorting out of window_gui.h so window_gui.h only needs to be included in *_gui.cpp. --- projects/openttd_vs80.vcproj | 4 ++++ projects/openttd_vs90.vcproj | 4 ++++ source.list | 1 + src/aircraft_gui.cpp | 1 + src/autoreplace_gui.cpp | 1 + src/build_vehicle_gui.cpp | 1 + src/depot_gui.cpp | 1 + src/economy.cpp | 1 + src/network/network_gui.cpp | 1 + src/sortlist_type.h | 31 +++++++++++++++++++++++++++++++ src/train_cmd.cpp | 2 +- src/vehicle.cpp | 7 ++----- src/vehicle_gui.cpp | 9 +++++++++ src/vehicle_gui.h | 3 ++- src/viewport.cpp | 1 + src/window_gui.h | 23 ----------------------- 16 files changed, 61 insertions(+), 30 deletions(-) create mode 100644 src/sortlist_type.h diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj index e73c5d269a..6d2e7f75c0 100644 --- a/projects/openttd_vs80.vcproj +++ b/projects/openttd_vs80.vcproj @@ -1407,6 +1407,10 @@ RelativePath=".\..\src\slope_type.h" > + + diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj index 190d050ed1..66057d6484 100644 --- a/projects/openttd_vs90.vcproj +++ b/projects/openttd_vs90.vcproj @@ -1404,6 +1404,10 @@ RelativePath=".\..\src\slope_type.h" > + + diff --git a/source.list b/source.list index 12b4f427bb..cb31b23f1c 100644 --- a/source.list +++ b/source.list @@ -277,6 +277,7 @@ signs_func.h signs_type.h slope_func.h slope_type.h +sortlist_type.h sound_func.h sound_type.h sprite.h diff --git a/src/aircraft_gui.cpp b/src/aircraft_gui.cpp index 2208d32eca..9787032fcb 100644 --- a/src/aircraft_gui.cpp +++ b/src/aircraft_gui.cpp @@ -13,6 +13,7 @@ #include "vehicle_func.h" #include "gfx_func.h" #include "order_func.h" +#include "window_gui.h" #include "table/sprites.h" #include "table/strings.h" diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp index e5a6122015..87bdabdb2a 100644 --- a/src/autoreplace_gui.cpp +++ b/src/autoreplace_gui.cpp @@ -21,6 +21,7 @@ #include "widgets/dropdown_func.h" #include "engine_func.h" #include "engine_base.h" +#include "window_gui.h" #include "table/sprites.h" #include "table/strings.h" diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index a5af78f6a1..eb7333f559 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -28,6 +28,7 @@ #include "gfx_func.h" #include "widgets/dropdown_func.h" #include "string_func.h" +#include "window_gui.h" #include "table/sprites.h" #include "table/strings.h" diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index 842d182034..14d90acd6f 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -25,6 +25,7 @@ #include "order_func.h" #include "depot_base.h" #include "tilehighlight_func.h" +#include "window_gui.h" #include "table/strings.h" #include "table/sprites.h" diff --git a/src/economy.cpp b/src/economy.cpp index ab0695a004..f417ad9b1c 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -46,6 +46,7 @@ #include "gfx_func.h" #include "autoreplace_func.h" #include "player_gui.h" +#include "window_gui.h" #include "table/strings.h" #include "table/sprites.h" diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 61beab24ac..f433eddbdd 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -30,6 +30,7 @@ #include "../settings_type.h" #include "../widgets/dropdown_func.h" #include "../querystring_gui.h" +#include "../sortlist_type.h" #include "table/strings.h" #include "../table/sprites.h" diff --git a/src/sortlist_type.h b/src/sortlist_type.h new file mode 100644 index 0000000000..a3e4285548 --- /dev/null +++ b/src/sortlist_type.h @@ -0,0 +1,31 @@ +/* $Id$ */ + +/** @file sortlist_type.h Base types for having sorted lists in GUIs. */ + +#ifndef SORTLIST_TYPE_H +#define SORTLIST_TYPE_H + +enum SortListFlags { + VL_NONE = 0, ///< no sort + VL_DESC = 1 << 0, ///< sort descending or ascending + VL_RESORT = 1 << 1, ///< instruct the code to resort the list in the next loop + VL_REBUILD = 1 << 2, ///< create sort-listing to use for qsort and friends + VL_END = 1 << 3, +}; +DECLARE_ENUM_AS_BIT_SET(SortListFlags); + +struct Listing { + bool order; ///< Ascending/descending + byte criteria; ///< Sorting criteria +}; + +template +struct GUIList { + T* sort_list; ///< The items to sort. + SortListFlags flags; ///< used to control sorting/resorting/etc. + uint16 list_length; ///< length of the list being sorted + uint16 resort_timer; ///< resort list after a given amount of ticks if set + byte sort_type; ///< what criteria to sort on +}; + +#endif /* SORTLIST_TYPE_H */ diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index b377bfb5c4..146c33bc1c 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1350,7 +1350,7 @@ CommandCost CmdSellRailWagon(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) if (flags & DC_EXEC) { if (v == first && IsFrontEngine(first)) { - delete FindWindowById(WC_VEHICLE_VIEW, first->index); + DeleteWindowById(WC_VEHICLE_VIEW, first->index); } InvalidateWindow(WC_VEHICLE_DEPOT, first->tile); RebuildVehicleLists(); diff --git a/src/vehicle.cpp b/src/vehicle.cpp index b559a8fc73..53a38e2395 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -590,11 +590,8 @@ void Vehicle::PreDestructor() delete this->Next(); } - Window *w = FindWindowById(WC_MAIN_WINDOW, 0); - if (w != NULL && w->viewport->follow_vehicle == this->index) { - ScrollMainWindowTo(this->x_pos, this->y_pos, true); // lock the main view on the vehicle's last position - w->viewport->follow_vehicle = INVALID_VEHICLE; - } + extern void StopGlobalFollowVehicle(const Vehicle *v); + StopGlobalFollowVehicle(this); } Vehicle::~Vehicle() diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index 274c9e20fc..7fcd64b5b8 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -2171,3 +2171,12 @@ void DrawVehicleImage(const Vehicle *v, int x, int y, VehicleID selection, int c default: NOT_REACHED(); } } + +void StopGlobalFollowVehicle(const Vehicle *v) +{ + Window *w = FindWindowById(WC_MAIN_WINDOW, 0); + if (w != NULL && w->viewport->follow_vehicle == v->index) { + ScrollMainWindowTo(v->x_pos, v->y_pos, true); // lock the main view on the vehicle's last position + w->viewport->follow_vehicle = INVALID_VEHICLE; + } +} diff --git a/src/vehicle_gui.h b/src/vehicle_gui.h index 1079bd22ed..e34282cc25 100644 --- a/src/vehicle_gui.h +++ b/src/vehicle_gui.h @@ -5,7 +5,8 @@ #ifndef VEHICLE_GUI_H #define VEHICLE_GUI_H -#include "window_gui.h" +#include "sortlist_type.h" +#include "window_type.h" #include "vehicle_type.h" #include "order_type.h" #include "station_type.h" diff --git a/src/viewport.cpp b/src/viewport.cpp index 6cc15e30cb..2a78983a9e 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -47,6 +47,7 @@ #include "misc/smallvec.h" #include "window_func.h" #include "tilehighlight_func.h" +#include "window_gui.h" #include "table/sprites.h" #include "table/strings.h" diff --git a/src/window_gui.h b/src/window_gui.h index ab74b0c420..29fe579f65 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -514,29 +514,6 @@ public: virtual ~PickerWindowBase(); }; -enum SortListFlags { - VL_NONE = 0, ///< no sort - VL_DESC = 1 << 0, ///< sort descending or ascending - VL_RESORT = 1 << 1, ///< instruct the code to resort the list in the next loop - VL_REBUILD = 1 << 2, ///< create sort-listing to use for qsort and friends - VL_END = 1 << 3, -}; -DECLARE_ENUM_AS_BIT_SET(SortListFlags); - -struct Listing { - bool order; ///< Ascending/descending - byte criteria; ///< Sorting criteria -}; - -template -struct GUIList { - T* sort_list; ///< The items to sort. - SortListFlags flags; ///< used to control sorting/resorting/etc. - uint16 list_length; ///< length of the list being sorted - uint16 resort_timer; ///< resort list after a given amount of ticks if set - byte sort_type; ///< what criteria to sort on -}; - /****************** THESE ARE NOT WIDGET TYPES!!!!! *******************/ enum WindowWidgetBehaviours { WWB_PUSHBUTTON = 1 << 5,