changeset 13705:8dee47e001b2 draft

(svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
author alberth <alberth@openttd.org>
date Sun, 22 Nov 2009 18:28:14 +0000
parents af90d4bf0785
children a15d8546fedf
files src/ai/ai_gui.cpp src/autoreplace_gui.cpp src/bridge_gui.cpp src/build_vehicle_gui.cpp src/cheat_gui.cpp src/company_gui.cpp src/depot_gui.cpp src/engine_gui.cpp src/genworld_gui.cpp src/graph_gui.cpp src/group_gui.cpp src/industry_gui.cpp src/intro_gui.cpp src/misc_gui.cpp src/music_gui.cpp src/network/network_chat_gui.cpp src/network/network_content_gui.cpp src/network/network_gui.cpp src/newgrf_gui.cpp src/news_gui.cpp src/order_gui.cpp src/rail_gui.cpp src/settings_gui.cpp src/signs_gui.cpp src/smallmap_gui.cpp src/station_gui.cpp src/statusbar_gui.cpp src/subsidy_gui.cpp src/timetable_gui.cpp src/toolbar_gui.cpp src/town_gui.cpp src/tree_gui.cpp src/vehicle_gui.cpp src/widget.cpp src/window_gui.h
diffstat 35 files changed, 82 insertions(+), 76 deletions(-) [+]
line wrap: on
line diff
--- a/src/ai/ai_gui.cpp
+++ b/src/ai/ai_gui.cpp
@@ -76,7 +76,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget == AIL_WIDGET_LIST) {
 			this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
@@ -279,7 +279,7 @@
 		this->vscroll.SetCount((int)this->ai_config->GetConfigList()->size());
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget == AIS_WIDGET_BACKGROUND) {
 			this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
@@ -544,7 +544,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case AIC_WIDGET_LIST:
@@ -698,7 +698,7 @@
 		if (ai_debug_company != INVALID_COMPANY) this->LowerWidget(ai_debug_company + AID_WIDGET_COMPANY_BUTTON_START);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget == AID_WIDGET_LOG_PANEL) {
 			resize->height = FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
--- a/src/autoreplace_gui.cpp
+++ b/src/autoreplace_gui.cpp
@@ -231,7 +231,7 @@
 		this->sel_group = id_g;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case RVW_WIDGET_LEFT_MATRIX:
--- a/src/bridge_gui.cpp
+++ b/src/bridge_gui.cpp
@@ -164,7 +164,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case BBSW_DROPDOWN_ORDER: {
--- a/src/build_vehicle_gui.cpp
+++ b/src/build_vehicle_gui.cpp
@@ -1086,7 +1086,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case BUILD_VEHICLE_WIDGET_LIST:
--- a/src/cheat_gui.cpp
+++ b/src/cheat_gui.cpp
@@ -215,7 +215,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != CW_PANEL) return;
 
--- a/src/company_gui.cpp
+++ b/src/company_gui.cpp
@@ -320,7 +320,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		int type = _settings_client.gui.expenses_layout;
 		switch (widget) {
@@ -596,7 +596,7 @@
 		this->LowerWidget(SCLW_WIDGET_CLASS_GENERAL);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		/* Number of liveries in each class, used to determine the height of the livery matrix widget. */
 		static const byte livery_height[] = {
@@ -1646,7 +1646,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case CW_WIDGET_DESC_COMPANY_VALUE:
@@ -1922,7 +1922,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case BCW_FACE:
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -612,7 +612,7 @@
 	uint flag_width;
 	uint flag_height;
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case DEPOT_WIDGET_SELL_CHAIN:
--- a/src/engine_gui.cpp
+++ b/src/engine_gui.cpp
@@ -80,7 +80,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != EPW_QUESTION) return;
 
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
@@ -411,7 +411,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		const StringID *strs = NULL;
 		switch (widget) {
@@ -901,7 +901,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		StringID str = STR_JUST_INT;
 		switch (widget) {
@@ -1188,7 +1188,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case GPWW_PROGRESS_BAR: {
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -786,7 +786,7 @@
 		this->InitNested(desc, window_number);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget < CPW_CARGO_FIRST) return;
 
@@ -1109,7 +1109,7 @@
 	uint score_detail_left;
 	uint score_detail_right;
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case PRW_SCORE_FIRST:
--- a/src/group_gui.cpp
+++ b/src/group_gui.cpp
@@ -249,7 +249,7 @@
 		*this->sorting = this->vehicles.GetListing();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case GRP_WIDGET_LIST_GROUP:
--- a/src/industry_gui.cpp
+++ b/src/industry_gui.cpp
@@ -207,7 +207,7 @@
 		this->InitNested(&_build_industry_desc, 0);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case DPIW_MATRIX_WIDGET: {
@@ -702,7 +702,7 @@
 		if (widget== IVW_CAPTION) SetDParam(0, this->window_number);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget == IVW_INFO) size->height = this->info_height;
 	}
@@ -1077,7 +1077,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case IDW_DROPDOWN_ORDER: {
--- a/src/intro_gui.cpp
+++ b/src/intro_gui.cpp
@@ -84,7 +84,7 @@
 		if (widget == SGI_DIFFICULTIES) SetDParam(0, STR_DIFFICULTY_LEVEL_EASY + _settings_newgame.difficulty.diff_level);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != SGI_DIFFICULTIES) return;
 
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -114,7 +114,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != LIW_BACKGROUND) return;
 
@@ -432,7 +432,7 @@
 		if (widget == AW_WEBSITE) SetDParamStr(0, "Website: http://www.openttd.org");
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != AW_SCROLLING_TEXT) return;
 
@@ -559,7 +559,7 @@
 		this->InitNested(desc);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != EMW_MESSAGE) return;
 
@@ -823,7 +823,7 @@
 		return pt;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		/* There is only one widget. */
 		for (uint i = 0; i != this->paramcount; i++) SetDParam(i, this->params[i]);
@@ -1339,7 +1339,7 @@
 		this->LowerWidget(QUERY_STR_WIDGET_TEXT);
 	}
 
-	void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget == QUERY_STR_WIDGET_DEFAULT && (this->flags & QSF_ENABLE_DEFAULT) == 0) {
 			this->GetWidget<NWidgetCore>(widget)->SetFill(0, 1);
@@ -1518,7 +1518,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != QUERY_WIDGET_TEXT) return;
 
@@ -1865,7 +1865,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case SLWW_CONTENT_DOWNLOAD_SEL:
--- a/src/music_gui.cpp
+++ b/src/music_gui.cpp
@@ -250,7 +250,7 @@
 		this->SetDirty();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case MTSW_PLAYLIST: {
@@ -462,7 +462,7 @@
 		this->SetWidgetLoweredState(MW_SHUFFLE, msf.shuffle);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			/* Make sure that MW_SHUFFLE and MW_PROGRAMME have the same size.
--- a/src/network/network_chat_gui.cpp
+++ b/src/network/network_chat_gui.cpp
@@ -455,7 +455,7 @@
 		return pt;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != NWCW_DESTINATION) return;
 
--- a/src/network/network_content_gui.cpp
+++ b/src/network/network_content_gui.cpp
@@ -376,7 +376,7 @@
 		_network_content_client.RemoveCallback(this);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case NCLWW_FILTER_CAPT:
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -481,7 +481,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case NGWW_CONN_BTN:
@@ -1108,7 +1108,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case NSSW_CONNTYPE_BTN:
@@ -1486,7 +1486,7 @@
 		return COMPANY_FIRST;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case NLWW_HEADER:
@@ -1904,7 +1904,7 @@
 		return this->desired_location;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		Dimension d = *size;
 		for (const ClientListAction *action = this->actions.Begin(); action != this->actions.End(); action++) {
@@ -2037,7 +2037,7 @@
 		return true;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != CLW_PANEL) return;
 
--- a/src/newgrf_gui.cpp
+++ b/src/newgrf_gui.cpp
@@ -264,7 +264,7 @@
 		this->SetWidgetDisabledState(ANGRFW_ADD, this->sel == NULL || this->sel->IsOpenTTDBaseGRF());
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case ANGRFW_GRF_LIST:
@@ -580,7 +580,7 @@
 		_grf_preset_list.Clear();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case SNGRFS_FILE_LIST:
--- a/src/news_gui.cpp
+++ b/src/news_gui.cpp
@@ -344,7 +344,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		StringID str = STR_NULL;
 		switch (widget) {
@@ -927,7 +927,7 @@
 		this->OnInvalidateData(0);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget == MHW_BACKGROUND) {
 			this->line_height = FONT_HEIGHT_NORMAL + 2;
@@ -1114,7 +1114,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget >= WIDGET_NEWSOPT_START_OPTION && widget < WIDGET_NEWSOPT_END_OPTION) {
 			/* Height is the biggest widget height in a row. */
--- a/src/order_gui.cpp
+++ b/src/order_gui.cpp
@@ -690,7 +690,7 @@
 		this->OnInvalidateData(-2);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case ORDER_WIDGET_TIMETABLE_VIEW:
--- a/src/rail_gui.cpp
+++ b/src/rail_gui.cpp
@@ -1085,7 +1085,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case BRSW_NEWST_DROPDOWN: {
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
@@ -229,7 +229,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case GOW_BASE_GRF_DESCRIPTION:
@@ -569,7 +569,7 @@
 		SetDParam(0, sd->desc.str + value);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		/* Only for the 'descriptions' */
 		int index = widget - GDW_OPTIONS_START;
@@ -1477,7 +1477,7 @@
 		this->vscroll.SetCount(_settings_main_page.Length());
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != SETTINGSEL_OPTIONSPANEL) return;
 
@@ -1760,7 +1760,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			/* Set the appropriate width for the edit 'buttons' */
--- a/src/signs_gui.cpp
+++ b/src/signs_gui.cpp
@@ -164,7 +164,7 @@
 		this->vscroll.SetCapacity((this->GetWidget<NWidgetBase>(SLW_LIST)->current_y - WD_FRAMERECT_TOP - WD_FRAMERECT_BOTTOM) / this->resize.step_height);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case SLW_LIST: {
--- a/src/smallmap_gui.cpp
+++ b/src/smallmap_gui.cpp
@@ -856,7 +856,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != SM_WIDGET_LEGEND) return;
 
--- a/src/station_gui.cpp
+++ b/src/station_gui.cpp
@@ -291,7 +291,7 @@
 		this->last_sorting = this->stations.GetListing();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case SLW_SORTDROPBTN: {
@@ -808,7 +808,7 @@
 		DeleteWindowById(WC_AIRCRAFT_LIST, wno | (VEH_AIRCRAFT << 11), false);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case SVW_WAITING:
@@ -1293,7 +1293,7 @@
 		this->OnInvalidateData(0);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != JSW_PANEL) return;
 
--- a/src/statusbar_gui.cpp
+++ b/src/statusbar_gui.cpp
@@ -109,7 +109,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		size->height = FONT_HEIGHT_NORMAL + padding.height;
 	}
--- a/src/subsidy_gui.cpp
+++ b/src/subsidy_gui.cpp
@@ -141,7 +141,7 @@
 		return 3 + num_awarded + num_not_awarded;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != SLW_PANEL) return;
 		Dimension d = maxdim(GetStringBoundingBox(STR_SUBSIDIES_OFFERED_TITLE), GetStringBoundingBox(STR_SUBSIDIES_SUBSIDISED_TITLE));
--- a/src/timetable_gui.cpp
+++ b/src/timetable_gui.cpp
@@ -68,7 +68,7 @@
 		this->sel_index = -1;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case TTV_TIMETABLE_PANEL:
--- a/src/toolbar_gui.cpp
+++ b/src/toolbar_gui.cpp
@@ -1437,7 +1437,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case TBSE_SPACERPANEL:
--- a/src/town_gui.cpp
+++ b/src/town_gui.cpp
@@ -211,7 +211,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case TWA_ACTION_INFO: {
@@ -717,7 +717,7 @@
 		}
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case TDW_SORTNAME:
--- a/src/tree_gui.cpp
+++ b/src/tree_gui.cpp
@@ -62,7 +62,7 @@
 		ResetObjectToPlace();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != BTW_MANY_RANDOM) return;
 
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -351,7 +351,7 @@
 		this->DrawWidgets();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case VRW_MATRIX:
@@ -956,7 +956,7 @@
 		*this->sorting = this->vehicles.GetListing();
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		if (widget != VLW_WIDGET_LIST) return;
 
@@ -1361,7 +1361,7 @@
 		this->tab = TDW_TAB_CARGO;
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		switch (widget) {
 			case VLD_WIDGET_TOP_DETAILS:
@@ -1849,7 +1849,7 @@
 		DeleteWindowById(WC_VEHICLE_TIMETABLE, this->window_number, false);
 	}
 
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 	{
 		const Vehicle *v = Vehicle::Get(this->window_number);
 		switch (widget) {
--- a/src/widget.cpp
+++ b/src/widget.cpp
@@ -955,17 +955,17 @@
 
 	/* Zero size plane selected */
 	if (this->shown_plane == STACKED_SELECTION_ZERO_SIZE) {
-		this->fill_x = 0;
-		this->fill_y = 0;
-
 		Dimension size = {0, 0};
+		Dimension padding = {0, 0};
+		Dimension fill = {0, 0};
 		Dimension resize = {0, 0};
-		Dimension padding = {0, 0};
 		/* Here we're primarily interested in the value of resize */
-		w->UpdateWidgetSize(this->index, &size, padding, &resize);
+		w->UpdateWidgetSize(this->index, &size, padding, &fill, &resize);
 
 		this->smallest_x = size.width;
 		this->smallest_y = size.height;
+		this->fill_x = fill.width;
+		this->fill_y = fill.height;
 		this->resize_x = resize.width;
 		this->resize_y = resize.height;
 		return;
@@ -1453,6 +1453,7 @@
 		}
 	} else {
 		Dimension d = {this->min_x, this->min_y};
+		Dimension fill = {this->fill_x, this->fill_y};
 		Dimension resize  = {this->resize_x, this->resize_y};
 		if (w != NULL) { // A non-NULL window pointer acts as switch to turn dynamic widget size on.
 			if (this->type == WWT_FRAME || this->type == WWT_INSET) {
@@ -1463,11 +1464,13 @@
 			}
 			if (this->index >= 0) {
 				static const Dimension padding = {0, 0};
-				w->UpdateWidgetSize(this->index, &d, padding, &resize);
+				w->UpdateWidgetSize(this->index, &d, padding, &fill, &resize);
 			}
 		}
 		this->smallest_x = d.width;
 		this->smallest_y = d.height;
+		this->fill_x = fill.width;
+		this->fill_y = fill.height;
 		this->resize_x = resize.width;
 		this->resize_y = resize.height;
 	}
@@ -1744,6 +1747,7 @@
 
 	/* A non-NULL window pointer acts as switch to turn dynamic widget sizing on. */
 	Dimension size = {this->min_x, this->min_y};
+	Dimension fill = {this->fill_x, this->fill_y};
 	Dimension resize = {this->resize_x, this->resize_y};
 	/* Get padding, and update size with the real content size if appropriate. */
 	const Dimension *padding = NULL;
@@ -1869,13 +1873,14 @@
 			NOT_REACHED();
 	}
 
-	if (this->index >= 0) w->UpdateWidgetSize(this->index, &size, *padding, &resize);
+	if (this->index >= 0) w->UpdateWidgetSize(this->index, &size, *padding, &fill, &resize);
 
 	this->smallest_x = size.width;
 	this->smallest_y = size.height;
+	this->fill_x = fill.width;
+	this->fill_y = fill.height;
 	this->resize_x = resize.width;
 	this->resize_y = resize.height;
-	/* this->fill_x and this->fill_y are already correct. */
 }
 
 void NWidgetLeaf::Draw(const Window *w)
--- a/src/window_gui.h
+++ b/src/window_gui.h
@@ -577,9 +577,10 @@
 	 * @param widget  Widget number.
 	 * @param size    Size of the widget.
 	 * @param padding Recommended amount of space between the widget content and the widget edge.
+	 * @param fill    Fill step of the widget.
 	 * @param resize  Resize step of the widget.
 	 */
-	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize) {}
+	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) {}
 
 	/**
 	 * Initialize string parameters for a widget.