diff options
-rw-r--r-- | src/vehicle_gui.cpp | 25 | ||||
-rw-r--r-- | src/vehicle_gui.h | 3 |
2 files changed, 15 insertions, 13 deletions
diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index 4b6a12617..c69dfc944 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -1533,7 +1533,9 @@ static const NWidgetPart _nested_vehicle_view_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, VVW_WIDGET_PANEL), - NWidget(WWT_INSET, COLOUR_GREY, VVW_WIDGET_VIEWPORT), SetPadding(2, 2, 2, 2), SetMinimalSize(228, 86), SetResize(1, 1), EndContainer(), + NWidget(WWT_INSET, COLOUR_GREY, VVW_WIDGET_INSET), SetPadding(2, 2, 2, 2), + NWidget(NWID_VIEWPORT, INVALID_COLOUR, VVW_WIDGET_VIEWPORT), SetMinimalSize(226, 84), SetResize(1, 1), SetPadding(1, 1, 1, 1), + EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, VVW_WIDGET_CENTER_MAIN_VIEH), SetMinimalSize(18, 18), SetFill(true, true), SetDataTip(SPR_CENTRE_VIEW_VEHICLE, 0x0 /* filled later */), @@ -1595,8 +1597,6 @@ static const ZoomLevel _vehicle_view_zoom_levels[] = { }; /* Constants for geometry of vehicle view viewport */ -static const int VV_VIEWPORT_X = 3; -static const int VV_VIEWPORT_Y = 17; static const int VV_INITIAL_VIEWPORT_WIDTH = 226; static const int VV_INITIAL_VIEWPORT_HEIGHT = 84; static const int VV_INITIAL_VIEWPORT_HEIGHT_TRAIN = 102; @@ -1719,9 +1719,7 @@ public: } this->FinishInitNested(desc, window_number); this->owner = v->owner; - InitializeWindowViewport(this, VV_VIEWPORT_X, VV_VIEWPORT_Y, VV_INITIAL_VIEWPORT_WIDTH, - (v->type == VEH_TRAIN) ? VV_INITIAL_VIEWPORT_HEIGHT_TRAIN : VV_INITIAL_VIEWPORT_HEIGHT, - this->window_number | (1 << 31), _vehicle_view_zoom_levels[v->type]); + this->GetWidget<NWidgetViewport>(VVW_WIDGET_VIEWPORT)->InitializeViewport(this, this->window_number | (1 << 31), _vehicle_view_zoom_levels[v->type]); this->GetWidget<NWidgetCore>(VVW_WIDGET_START_STOP_VEH)->tool_tip = STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP + v->type; this->GetWidget<NWidgetCore>(VVW_WIDGET_CENTER_MAIN_VIEH)->tool_tip = STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP + v->type; @@ -1749,6 +1747,11 @@ public: size->height = 0; size->width = 0; } break; + + case VVW_WIDGET_VIEWPORT: + size->width = VV_INITIAL_VIEWPORT_WIDTH; + size->height = (v->type == VEH_TRAIN) ? VV_INITIAL_VIEWPORT_HEIGHT_TRAIN : VV_INITIAL_VIEWPORT_HEIGHT; + break; } } @@ -1768,8 +1771,6 @@ public: } this->DrawWidgets(); - - this->DrawViewport(); } virtual void SetStringParameters(int widget) const @@ -1921,10 +1922,10 @@ public: virtual void OnResize(Point delta) { - this->viewport->width += delta.x; - this->viewport->height += delta.y; - this->viewport->virtual_width += delta.x; - this->viewport->virtual_height += delta.y; + if (this->viewport != NULL) { + NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(VVW_WIDGET_VIEWPORT); + nvp->UpdateViewportCoordinates(this); + } } virtual void OnTick() diff --git a/src/vehicle_gui.h b/src/vehicle_gui.h index 889b18281..75705ec59 100644 --- a/src/vehicle_gui.h +++ b/src/vehicle_gui.h @@ -28,7 +28,8 @@ enum VehicleViewWindowWidgets { VVW_WIDGET_CAPTION, VVW_WIDGET_STICKY, VVW_WIDGET_PANEL, - VVW_WIDGET_VIEWPORT, + VVW_WIDGET_INSET, + VVW_WIDGET_VIEWPORT, ///< Viewport widget. VVW_WIDGET_START_STOP_VEH, VVW_WIDGET_CENTER_MAIN_VIEH, VVW_WIDGET_GOTO_DEPOT, |