diff --git a/src/genworld.cpp b/src/genworld.cpp index a876c31de6..dc881a9d85 100644 --- a/src/genworld.cpp +++ b/src/genworld.cpp @@ -338,7 +338,9 @@ void GenerateWorld(GenWorldMode mode, uint size_x, uint size_y, bool reset_setti ShowGenerateWorldProgress(); /* Centre the view on the map */ - ScrollMainWindowToTile(TileXY(MapSizeX() / 2, MapSizeY() / 2), true); + if (FindWindowById(WC_MAIN_WINDOW, 0) != nullptr) { + ScrollMainWindowToTile(TileXY(MapSizeX() / 2, MapSizeY() / 2), true); + } _GenerateWorld(); } diff --git a/src/saveload/misc_sl.cpp b/src/saveload/misc_sl.cpp index 345ca29677..81e44bc236 100644 --- a/src/saveload/misc_sl.cpp +++ b/src/saveload/misc_sl.cpp @@ -36,11 +36,13 @@ ZoomLevel _saved_scrollpos_zoom; void SaveViewportBeforeSaveGame() { - const Window *w = GetMainWindow(); + const Window *w = FindWindowById(WC_MAIN_WINDOW, 0); - _saved_scrollpos_x = w->viewport->scrollpos_x; - _saved_scrollpos_y = w->viewport->scrollpos_y; - _saved_scrollpos_zoom = w->viewport->zoom; + if (w != nullptr) { + _saved_scrollpos_x = w->viewport->scrollpos_x; + _saved_scrollpos_y = w->viewport->scrollpos_y; + _saved_scrollpos_zoom = w->viewport->zoom; + } } void ResetViewportAfterLoadGame() diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index a6dd59296c..0e10548c2e 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -2196,7 +2196,8 @@ struct MainToolbarWindow : Window { void OnInvalidateData(int data = 0, bool gui_scope = true) override { if (!gui_scope) return; - HandleZoomMessage(this, GetMainWindow()->viewport, WID_TN_ZOOM_IN, WID_TN_ZOOM_OUT); + Window *w = FindWindowById(WC_MAIN_WINDOW, 0); + if (w != nullptr) HandleZoomMessage(this, w->viewport, WID_TN_ZOOM_IN, WID_TN_ZOOM_OUT); } static HotkeyList hotkeys; @@ -2577,7 +2578,8 @@ struct ScenarioEditorToolbarWindow : Window { void OnInvalidateData(int data = 0, bool gui_scope = true) override { if (!gui_scope) return; - HandleZoomMessage(this, GetMainWindow()->viewport, WID_TE_ZOOM_IN, WID_TE_ZOOM_OUT); + Window *w = FindWindowById(WC_MAIN_WINDOW, 0); + if (w != nullptr) HandleZoomMessage(this, w->viewport, WID_TE_ZOOM_IN, WID_TE_ZOOM_OUT); } void OnQueryTextFinished(char *str) override diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index 8c2f6a346c..28dd228b60 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -4185,8 +4185,8 @@ bool VehicleClicked(const GUIVehicleGroup &vehgroup) void StopGlobalFollowVehicle(const Vehicle *v) { - Window *w = GetMainWindow(); - if (w->viewport->follow_vehicle == v->index) { + Window *w = FindWindowById(WC_MAIN_WINDOW, 0); + if (w != nullptr && w->viewport->follow_vehicle == v->index) { ScrollMainWindowTo(v->x_pos, v->y_pos, v->z_pos, true); // lock the main view on the vehicle's last position w->viewport->follow_vehicle = INVALID_VEHICLE; }