mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
(svn r1497) -Fix: [1101179] Crash if generating land while industry window is open. This also happened for towns and the land information window
-Added DeleteWindowByClass() function that deletes all windows of a given class
This commit is contained in:
parent
06cc62f40d
commit
61cae70fe5
@ -201,6 +201,7 @@ void InvalidateWindow(byte cls, WindowNumber number);
|
||||
void InvalidateWindowWidget(byte cls, WindowNumber number, byte widget_index);
|
||||
void InvalidateWindowClasses(byte cls);
|
||||
void DeleteWindowById(WindowClass cls, WindowNumber number);
|
||||
void DeleteWindowByClass(WindowClass cls);
|
||||
|
||||
void SetObjectToPlaceWnd(int icon, byte mode, Window *w);
|
||||
void SetObjectToPlace(int icon, byte mode, WindowClass window_class, WindowNumber window_num);
|
||||
|
@ -1097,10 +1097,13 @@ static void AskResetLandscapeWndProc(Window *w, WindowEvent *e)
|
||||
break;
|
||||
case 4:
|
||||
DeleteWindow(w);
|
||||
if(mode) { // reset landscape
|
||||
DeleteWindowByClass(WC_INDUSTRY_VIEW);
|
||||
DeleteWindowByClass(WC_TOWN_VIEW);
|
||||
DeleteWindowByClass(WC_LAND_INFO);
|
||||
|
||||
if (mode) { // reset landscape
|
||||
ResetLandscape();
|
||||
}
|
||||
else { // make random landscape
|
||||
} else { // make random landscape
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
_switch_mode = SM_GENRANDLAND;
|
||||
}
|
||||
|
12
window.c
12
window.c
@ -262,6 +262,18 @@ void DeleteWindowById(WindowClass cls, WindowNumber number)
|
||||
DeleteWindow(FindWindowById(cls, number));
|
||||
}
|
||||
|
||||
void DeleteWindowByClass(WindowClass cls)
|
||||
{
|
||||
Window *w;
|
||||
for (w = _windows; w != _last_window;) {
|
||||
if (w->window_class == cls) {
|
||||
DeleteWindow(w);
|
||||
w = _windows;
|
||||
} else
|
||||
w++;
|
||||
}
|
||||
}
|
||||
|
||||
Window *BringWindowToFrontById(WindowClass cls, WindowNumber number)
|
||||
{
|
||||
Window *w = FindWindowById(cls, number);
|
||||
|
Loading…
Reference in New Issue
Block a user