1
0
Fork 0

(svn r17988) [0.7] -Backport from trunk:

- Feature: Port OpenTTD to GNU/Hurd
- Fix: When you start giving money (input window for amount), then get moved to spectators and you click 'Ok' a crash would occur (r17953)
- Fix: Crash when closing NewGRF parameter window with no NewGRF selected [FS#3291] (r17922)
- Fix: Uninitialised values in some paths of loading TTO savegames [FS#3288] (r17908)
- Fix: Make the plane speed setting unchangeable in network games because it can be read by NewGRFs on game load and thus if it changes cause desyncs (r17902)
release/0.7
rubidium 2009-11-06 22:58:54 +00:00
parent 072270f9b9
commit 7b6e449f15
7 changed files with 21 additions and 13 deletions

View File

@ -1799,6 +1799,7 @@ detect_os() {
/cygwin/ { print "CYGWIN"; exit}
/mingw/ { print "MINGW"; exit}
/os\/2/ { print "OS2"; exit}
/gnu/ { print "UNIX"; exit}
'`
fi

View File

@ -61,6 +61,7 @@ void HandleOnEditText(const char *str)
switch (_rename_what) {
#ifdef ENABLE_NETWORK
case 3: { // Give money, you can only give money in excess of loan
if (!IsValidCompanyID(_local_company)) break;
const Company *c = GetCompany(_local_company);
Money money = min(c->money - c->current_loan, (Money)(atoi(str) / _currency->rate));

View File

@ -516,6 +516,7 @@ struct NewGRFWindow : public Window {
this->preset = -1;
this->SetupNewGRFWindow();
this->SetDirty();
this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
break;
}
@ -558,6 +559,8 @@ struct NewGRFWindow : public Window {
uint i = (pt.y - this->widget[SNGRFS_FILE_LIST].top) / 14 + this->vscroll.pos;
for (c = this->list; c != NULL && i > 0; c = c->next, i--) {}
if (this->sel != c) this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
this->sel = c;
this->SetDirty();

View File

@ -417,12 +417,12 @@ static bool FixTTOEngines()
}
}
e->info.climates = 1;
}
e->preview_company_rank = 0;
e->preview_wait = 0;
e->name = NULL;
e->info.climates = 1;
}
}
return true;

View File

@ -1379,7 +1379,7 @@ const SettingDesc _settings[] = {
SDT_CONDBOOL(GameSettings, vehicle.disable_elrails, 38, SL_MAX_VERSION, 0,NN, false, STR_CONFIG_SETTING_DISABLE_ELRAILS, SettingsDisableElrail),
SDT_CONDVAR(GameSettings, vehicle.freight_trains, SLE_UINT8, 39, SL_MAX_VERSION, 0,NN, 1, 1, 255, 1, STR_CONFIG_SETTING_FREIGHT_TRAINS, NULL),
SDT_CONDBOOL(GameSettings, order.timetabling, 67, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_TIMETABLE_ALLOW, NULL),
SDT_CONDVAR(GameSettings, vehicle.plane_speed, SLE_UINT8, 90, SL_MAX_VERSION, 0, 0, 4, 1, 4, 0, STR_CONFIG_SETTING_PLANE_SPEED, NULL),
SDT_CONDVAR(GameSettings, vehicle.plane_speed, SLE_UINT8, 90, SL_MAX_VERSION, 0,NN, 4, 1, 4, 0, STR_CONFIG_SETTING_PLANE_SPEED, NULL),
SDT_CONDBOOL(GameSettings, vehicle.dynamic_engines, 95, SL_MAX_VERSION, 0,NN, false, STR_CONFIG_SETTING_DYNAMIC_ENGINES, ChangeDynamicEngines),
SDT_BOOL(GameSettings, station.join_stations, 0, 0, true, STR_CONFIG_SETTING_JOINSTATIONS, NULL),

View File

@ -509,12 +509,14 @@ void SetWindowDirty(const Window *w)
/** Find the Window whose parent pointer points to this window
* @param w parent Window to find child of
* @return a Window pointer that is the child of w, or NULL otherwise */
static Window *FindChildWindow(const Window *w)
* @param wc Window class of the window to remove; WC_INVALID if class does not matter
* @return a Window pointer that is the child of w, or NULL otherwise
*/
static Window *FindChildWindow(const Window *w, WindowClass wc)
{
Window *v;
FOR_ALL_WINDOWS_FROM_BACK(v) {
if (v->parent == w) return v;
if ((wc == WC_INVALID || wc == v->window_class) && v->parent == w) return v;
}
return NULL;
@ -522,13 +524,14 @@ static Window *FindChildWindow(const Window *w)
/**
* Delete all children a window might have in a head-recursive manner
* @param wc Window class of the window to remove; WC_INVALID if class does not matter
*/
void Window::DeleteChildWindows() const
void Window::DeleteChildWindows(WindowClass wc) const
{
Window *child = FindChildWindow(this);
Window *child = FindChildWindow(this, wc);
while (child != NULL) {
delete child;
child = FindChildWindow(this);
child = FindChildWindow(this, wc);
}
}

View File

@ -380,7 +380,7 @@ public:
void DrawViewport() const;
void DrawSortButtonState(int widget, SortButtonState state) const;
void DeleteChildWindows() const;
void DeleteChildWindows(WindowClass wc = WC_INVALID) const;
void SetDirty() const;