Index: src/bridge_gui.cpp =================================================================== --- src/bridge_gui.cpp (revision 16883) +++ src/bridge_gui.cpp (working copy) @@ -52,6 +52,7 @@ enum BuildBridgeSelectionWidgets { BBSW_CLOSEBOX = 0, BBSW_CAPTION, + BBSW_SHADEBOX, BBSW_DROPDOWN_ORDER, BBSW_DROPDOWN_CRITERIA, BBSW_BRIDGE_LIST, @@ -158,6 +159,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->DrawSortButtonState(BBSW_DROPDOWN_ORDER, this->bridges->IsDescSortOrder() ? SBS_DOWN : SBS_UP); uint y = this->widget[BBSW_BRIDGE_LIST].top + 2; @@ -256,7 +260,8 @@ /* Widget definition for the rail bridge selection window */ static const Widget _build_bridge_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BBSW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 199, 0, 13, STR_SELECT_RAIL_BRIDGE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BBSW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 187, 0, 13, STR_SELECT_RAIL_BRIDGE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BBSW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 188, 199, 0, 13, 0x0, STR_SHADE_BUTTON}, // BBSW_SHADEBOX { WWT_TEXTBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 80, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP}, // BBSW_DROPDOWN_ORDER { WWT_DROPDOWN, RESIZE_NONE, COLOUR_DARK_GREEN, 81, 199, 14, 25, 0x0, STR_SORT_CRITERIA_TIP}, // BBSW_DROPDOWN_CRITERIA @@ -272,6 +277,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BBSW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BBSW_CAPTION), SetFill(1, 0), SetDataTip(STR_SELECT_RAIL_BRIDGE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BBSW_SHADEBOX), EndContainer(), /* Sort order + criteria buttons */ NWidget(NWID_HORIZONTAL), @@ -292,7 +298,7 @@ static const WindowDesc _build_bridge_desc( WDP_AUTO, WDP_AUTO, 200, 114, 200, 114, WC_BUILD_BRIDGE, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, _build_bridge_widgets, _nested_build_bridge_widgets, lengthof(_nested_build_bridge_widgets) ); Index: src/settings_gui.cpp =================================================================== --- src/settings_gui.cpp (revision 16883) +++ src/settings_gui.cpp (working copy) @@ -101,6 +101,7 @@ enum GameOptionsWidgets { GOW_CLOSEBOX = 0, ///< Close the window GOW_CAPTION, ///< Caption of the window + GOW_SHADEBOX, ///< Shade the window GOW_BACKGROUND, ///< Background of the window GOW_CURRENCY_FRAME, ///< Frame of the currency dropdown GOW_CURRENCY_DROPDOWN, ///< Currency dropdown @@ -201,6 +202,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + SetDParam(0, STR_JUST_RAW_STRING); SetDParamStr(1, GetGraphicsSetDescription(GetIndexOfCurrentGraphicsSet())); const Widget *desc = &this->widget[GOW_BASE_GRF_DESCRIPTION]; @@ -355,7 +359,8 @@ static const Widget _game_options_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // GOW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 369, 0, 13, STR_GAME_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // GOW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 357, 0, 13, STR_GAME_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // GOW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 358, 369, 0, 13, 0x0, STR_SHADE_BUTTON}, // GOW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 369, 14, 248, 0x0, STR_NULL}, // GOW_BACKGROUND { WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 10, 179, 20, 55, STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL}, // GOW_CURRENCY_FRAME { WWT_DROPDOWN, RESIZE_NONE, COLOUR_GREY, 20, 169, 34, 45, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP}, // GOW_CURRENCY_DROPDOWN @@ -391,6 +396,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, GOW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, GOW_CAPTION), SetDataTip(STR_GAME_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, GOW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, GOW_BACKGROUND), SetPIP(6, 6, 10), NWidget(NWID_HORIZONTAL), SetPIP(10, 10, 10), @@ -443,7 +449,7 @@ static const WindowDesc _game_options_desc( WDP_CENTER, WDP_CENTER, 370, 249, 370, 249, WC_GAME_OPTIONS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _game_options_widgets, _nested_game_options_widgets, lengthof(_nested_game_options_widgets) ); @@ -460,6 +466,7 @@ /* Names of the game difficulty settings window */ enum GameDifficultyWidgets { GDW_CAPTION, + GDW_SHADEBOX, GDW_UPPER_BG, GDW_LVL_EASY, GDW_LVL_MEDIUM, @@ -474,7 +481,8 @@ /* Widget definition for the game difficulty settings window */ static const Widget _game_difficulty_widgets[] = { -{ WWT_CAPTION, RESIZE_NONE, COLOUR_MAUVE, 0, 369, 0, 13, STR_DIFFICULTY_LEVEL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // GDW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_MAUVE, 0, 357, 0, 13, STR_DIFFICULTY_LEVEL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // GDW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_MAUVE, 358, 369, 0, 13, 0x0, STR_SHADE_BUTTON}, // GDW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_MAUVE, 0, 369, 14, 41, 0x0, STR_NULL}, // GDW_UPPER_BG { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 10, 96, 16, 27, STR_DIFFICULTY_LEVEL_EASY, STR_NULL}, // GDW_LVL_EASY { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 97, 183, 16, 27, STR_DIFFICULTY_LEVEL_MEDIUM, STR_NULL}, // GDW_LVL_MEDIUM @@ -489,7 +497,10 @@ }; static const NWidgetPart _nested_game_difficulty_widgets[] = { - NWidget(WWT_CAPTION, COLOUR_MAUVE, GDW_CAPTION), SetMinimalSize(370, 14), SetDataTip(STR_DIFFICULTY_LEVEL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_CAPTION, COLOUR_MAUVE, GDW_CAPTION), SetMinimalSize(358, 14), SetDataTip(STR_DIFFICULTY_LEVEL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_MAUVE, GDW_SHADEBOX), + EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE, GDW_UPPER_BG), NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_HORIZONTAL), @@ -525,7 +536,7 @@ static const WindowDesc _game_difficulty_desc( WDP_CENTER, WDP_CENTER, 370, 279, 370, 279, WC_GAME_OPTIONS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _game_difficulty_widgets, _nested_game_difficulty_widgets, lengthof(_nested_game_difficulty_widgets) ); @@ -574,6 +585,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + uint i; const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i); int y = GAMEDIFF_WND_TOP_OFFSET; @@ -1360,6 +1374,7 @@ enum GameSettingsWidgets { SETTINGSEL_CLOSEBOX, ///< Close box at top-left SETTINGSEL_CAPTION, ///< Title bar + SETTINGSEL_SHADEBOX, ///< Shade box at top-right SETTINGSEL_OPTIONSPANEL, ///< Panel widget containing the option lists SETTINGSEL_SCROLLBAR, ///< Scrollbar SETTINGSEL_RESIZE, ///< Resize button @@ -1412,6 +1427,10 @@ virtual void OnPaint() { this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + _settings_main_page.Draw(settings_ptr, SETTINGTREE_LEFT_OFFSET, SETTINGTREE_TOP_OFFSET, this->width - 13, this->vscroll.pos, this->vscroll.pos + this->vscroll.cap); } @@ -1568,7 +1587,8 @@ static const Widget _settings_selection_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SETTINGSEL_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 411, 0, 13, STR_CONFIG_SETTING_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SETTINGSEL_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 399, 0, 13, STR_CONFIG_SETTING_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SETTINGSEL_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_MAUVE, 400, 411, 0, 13, 0x0, STR_SHADE_BUTTON}, // SETTINGSEL_SHADEBOX { WWT_PANEL, RESIZE_RB, COLOUR_MAUVE, 0, 399, 14, 187, 0x0, STR_NULL}, // SETTINGSEL_OPTIONSPANEL { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_MAUVE, 400, 411, 14, 175, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, // SETTINGSEL_SCROLLBAR { WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_MAUVE, 400, 411, 176, 187, 0x0, STR_RESIZE_BUTTON}, // SETTINGSEL_RESIZE @@ -1579,6 +1599,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE, SETTINGSEL_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_MAUVE, SETTINGSEL_CAPTION), SetDataTip(STR_CONFIG_SETTING_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_MAUVE, SETTINGSEL_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_MAUVE, SETTINGSEL_OPTIONSPANEL), SetMinimalSize(400, 174), SetResize(1, SETTING_HEIGHT), EndContainer(), @@ -1592,7 +1613,7 @@ static const WindowDesc _settings_selection_desc( WDP_CENTER, WDP_CENTER, 412, 188, 450, 397, WC_GAME_OPTIONS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE | WDF_SHADE_BUTTON, _settings_selection_widgets, _nested_settings_selection_widgets, lengthof(_nested_settings_selection_widgets) ); @@ -1634,6 +1655,7 @@ enum CustomCurrencyWidgets { CUSTCURR_CLOSEBOX, CUSTCURR_CAPTION, + CUSTCURR_SHADEBOX, CUSTCURR_BACKGROUND, CUSTCURR_RATE_DOWN, @@ -1804,7 +1826,8 @@ static const Widget _cust_currency_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // CUSTCURR_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 229, 0, 13, STR_CURRENCY_WINDOW, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // CUSTCURR_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 217, 0, 13, STR_CURRENCY_WINDOW, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // CUSTCURR_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 218, 229, 0, 13, 0x0, STR_SHADE_BUTTON}, // CUSTCURR_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 229, 14, 119, 0x0, STR_NULL}, // CUSTCURR_BACKGROUND { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 10, 19, 21, 29, STR_ARROW_LEFT_SMALL, STR_TOOLTIP_DECREASE_EXCHANGE_RATE}, // CUSTCURR_RATE_DOWN @@ -1833,6 +1856,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, CUSTCURR_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, CUSTCURR_CAPTION), SetDataTip(STR_CURRENCY_WINDOW, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, CUSTCURR_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, CUSTCURR_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 7), @@ -1880,7 +1904,7 @@ static const WindowDesc _cust_currency_desc( WDP_CENTER, WDP_CENTER, 230, 120, 230, 120, WC_CUSTOM_CURRENCY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _cust_currency_widgets, _nested_cust_currency_widgets, lengthof(_nested_cust_currency_widgets) ); Index: src/genworld_gui.cpp =================================================================== --- src/genworld_gui.cpp (revision 16883) +++ src/genworld_gui.cpp (working copy) @@ -633,6 +633,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->DrawEditBox(GLAND_RANDOM_EDITBOX); if (mode != GLWP_GENERATE) { @@ -1281,6 +1284,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Draw the % complete with a bar and a text */ DrawFrameRect(19, 20, (this->width - 18), 37, COLOUR_GREY, FR_BORDERONLY); DrawFrameRect(20, 21, (int)((this->width - 40) * _tp.percent / 100) + 20, 36, COLOUR_MAUVE, FR_NONE); Index: src/misc_gui.cpp =================================================================== --- src/misc_gui.cpp (revision 16883) +++ src/misc_gui.cpp (working copy) @@ -48,12 +48,14 @@ enum LandInfoWidgets { LIW_CLOSE, ///< Close the window LIW_CAPTION, ///< Title bar of the window + LIW_SHADEBOX, ///< Shade the window LIW_BACKGROUND, ///< Background to draw on }; static const Widget _land_info_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // LIW_CLOSE -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 299, 0, 13, STR_LAND_AREA_INFORMATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // LIW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 287, 0, 13, STR_LAND_AREA_INFORMATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // LIW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 288, 299, 0, 13, 0x0, STR_SHADE_BUTTON}, // LIW_SHADEBOX { WWT_PANEL, RESIZE_BOTTOM, COLOUR_GREY, 0, 299, 14, 99, 0x0, STR_NULL}, // LIW_BACKGROUND { WIDGETS_END}, }; @@ -62,6 +64,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, LIW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, LIW_CAPTION), SetDataTip(STR_LAND_AREA_INFORMATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, LIW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, LIW_BACKGROUND), SetMinimalSize(300, 86), SetResize(0, 1), EndContainer(), }; @@ -69,7 +72,7 @@ static const WindowDesc _land_info_desc( WDP_AUTO, WDP_AUTO, 300, 100, 300, 100, WC_LAND_INFO, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _land_info_widgets, _nested_land_info_widgets, lengthof(_nested_land_info_widgets) ); @@ -89,6 +92,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + uint y = 21; for (uint i = 0; i < LAND_INFO_CENTERED_LINES; i++) { if (StrEmpty(this->landinfo_data[i])) break; @@ -289,17 +295,19 @@ } } -/** Widgets for the land info window. */ +/** Widgets for the about window. */ enum AboutWidgets { AW_CLOSE, ///< Close the window AW_CAPTION, ///< Title bar of the window + AW_SHADEBOX, ///< Shade the window AW_BACKGROUND, ///< Background to draw on AW_FRAME, ///< The scrolling frame with goodies }; static const Widget _about_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // AW_CLOSE -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 419, 0, 13, STR_ABOUT_OPENTTD, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // AW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 407, 0, 13, STR_ABOUT_OPENTTD, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // AW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 408, 419, 0, 13, 0x0, STR_SHADE_BUTTON}, // AW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 419, 14, 271, 0x0, STR_NULL}, // AW_BACKGROUND { WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 5, 414, 40, 245, STR_NULL, STR_NULL}, // AW_FRAME { WIDGETS_END}, @@ -309,6 +317,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, AW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, AW_CAPTION), SetDataTip(STR_ABOUT_OPENTTD, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, AW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, AW_BACKGROUND), NWidget(WWT_FRAME, COLOUR_GREY, AW_FRAME), SetMinimalSize(410, 206), SetPadding(26, 5, 26, 5), EndContainer(), @@ -318,7 +327,7 @@ static const WindowDesc _about_desc( WDP_CENTER, WDP_CENTER, 420, 272, 420, 272, WC_GAME_OPTIONS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _about_widgets, _nested_about_widgets, lengthof(_nested_about_widgets) ); @@ -394,6 +403,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Show original copyright and revision version */ DrawString(this->widget[AW_BACKGROUND].left + 2, this->widget[AW_BACKGROUND].right - 2, 17, STR_ABOUT_ORIGINAL_COPYRIGHT, TC_FROMSTRING, SA_CENTER); DrawString(this->widget[AW_BACKGROUND].left + 2, this->widget[AW_BACKGROUND].right - 2, 17 + 10, STR_ABOUT_VERSION, TC_FROMSTRING, SA_CENTER); @@ -435,6 +447,7 @@ enum ErrorMessageWidgets { EMW_CLOSE = 0, EMW_CAPTION, + EMW_SHADEBOX, EMW_PANEL, EMW_FACE, EMW_MESSAGE, @@ -442,7 +455,8 @@ static const Widget _errmsg_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_RED, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_RED, 11, 239, 0, 13, STR_ERROR_MESSAGE_CAPTION, STR_NULL}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_RED, 11, 227, 0, 13, STR_ERROR_MESSAGE_CAPTION, STR_NULL}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_RED, 228, 239, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_BOTTOM, COLOUR_RED, 0, 239, 14, 45, 0x0, STR_NULL}, { WWT_EMPTY, RESIZE_NONE, COLOUR_RED, 0, 0, 0, 0, 0x0, STR_NULL}, { WWT_EMPTY, RESIZE_NONE, COLOUR_RED, 2, 237, 14, 45, 0x0, STR_NULL}, @@ -455,6 +469,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_RED, EMW_CLOSE), NWidget(WWT_CAPTION, COLOUR_RED, EMW_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION, STR_NULL), + NWidget(WWT_SHADEBOX, COLOUR_RED, EMW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_RED, EMW_PANEL), NWidget(WWT_EMPTY, COLOUR_RED, EMW_MESSAGE), SetPadding(0, 2, 0, 2), SetMinimalSize(236, 32), @@ -473,7 +488,8 @@ static const Widget _errmsg_face_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_RED, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_RED, 11, 333, 0, 13, STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_NULL}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_RED, 11, 321, 0, 13, STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_NULL}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_RED, 322, 333, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_BOTTOM, COLOUR_RED, 0, 333, 14, 136, 0x0, STR_NULL}, { WWT_EMPTY, RESIZE_NONE, COLOUR_RED, 2, 92, 16, 135, 0x0, STR_NULL}, { WWT_EMPTY, RESIZE_NONE, COLOUR_RED, 94, 331, 14, 136, 0x0, STR_NULL}, @@ -484,6 +500,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_RED, EMW_CLOSE), NWidget(WWT_CAPTION, COLOUR_RED, EMW_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_NULL), + NWidget(WWT_SHADEBOX, COLOUR_RED, EMW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_RED, EMW_PANEL), NWidget(NWID_HORIZONTAL), SetPIP(2, 1, 2), @@ -514,7 +531,7 @@ CopyOutDParam(this->decode_params, 0, lengthof(this->decode_params)); this->message_1 = msg1; this->message_2 = msg2; - this->desc_flags = WDF_STD_BTN | WDF_DEF_WIDGET; + this->desc_flags = WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON; SwitchToErrorRefStack(); RewindTextRefStack(); @@ -548,6 +565,10 @@ { CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + CopyInDParam(0, this->decode_params, lengthof(this->decode_params)); /* If the error message comes from a NewGRF, we must use the text ref. stack reserved for error messages. @@ -1195,6 +1216,7 @@ enum QueryStringWidgets { QUERY_STR_WIDGET_CLOSEBOX, QUERY_STR_WIDGET_CAPTION, + QUERY_STR_WIDGET_SHADEBOX, QUERY_STR_WIDGET_BACKGROUND, QUERY_STR_WIDGET_TEXT, QUERY_STR_WIDGET_DEFAULT, @@ -1218,6 +1240,9 @@ SetDParam(0, this->caption); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->DrawEditBox(QUERY_STR_WIDGET_TEXT); } @@ -1289,7 +1314,8 @@ static const Widget _query_string_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // QUERY_STR_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 259, 0, 13, STR_QUERY_CAPTION, STR_NULL}, // QUERY_STR_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 247, 0, 13, STR_QUERY_CAPTION, STR_NULL}, // QUERY_STR_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 248, 259, 0, 13, 0x0, STR_SHADE_BUTTON}, // QUERY_STR_WIDGET_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 259, 14, 29, 0x0, STR_NULL}, // QUERY_STR_WIDGET_BACKGROUND { WWT_EDITBOX, RESIZE_NONE, COLOUR_GREY, 2, 257, 16, 27, 0x0, STR_NULL}, // QUERY_STR_WIDGET_TEXT { WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 86, 30, 41, STR_DEFAULT, STR_NULL}, // QUERY_STR_WIDGET_DEFAULT @@ -1302,6 +1328,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, QUERY_STR_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, QUERY_STR_WIDGET_CAPTION), SetDataTip(STR_QUERY_CAPTION, STR_NULL), + NWidget(WWT_SHADEBOX, COLOUR_GREY, QUERY_STR_WIDGET_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, QUERY_STR_WIDGET_BACKGROUND), NWidget(WWT_EDITBOX, COLOUR_GREY, QUERY_STR_WIDGET_TEXT), SetMinimalSize(256, 12), SetPadding(2, 2, 2, 2), @@ -1316,7 +1343,7 @@ static const WindowDesc _query_string_desc( 190, 219, 260, 42, 260, 42, WC_QUERY_STRING, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _query_string_widgets, _nested_query_string_widgets, lengthof(_nested_query_string_widgets) ); @@ -1360,6 +1387,7 @@ enum QueryWidgets { QUERY_WIDGET_CLOSEBOX, QUERY_WIDGET_CAPTION, + QUERY_WIDGET_SHADEBOX, QUERY_WIDGET_BACKGROUND, QUERY_WIDGET_NO, QUERY_WIDGET_YES @@ -1399,6 +1427,10 @@ { CopyInDParam(0, this->params, lengthof(this->params)); this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + CopyInDParam(0, this->params, lengthof(this->params)); DrawStringMultiLine(1, this->width - 1, 14, 62, this->message, TC_FROMSTRING, SA_CENTER); @@ -1448,7 +1480,8 @@ static const Widget _query_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_RED, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // QUERY_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_RED, 11, 209, 0, 13, STR_NULL, STR_NULL}, // QUERY_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_RED, 11, 197, 0, 13, STR_NULL, STR_NULL}, // QUERY_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_RED, 198, 209, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // QUERY_WIDGET_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_RED, 0, 209, 14, 81, 0x0, /*OVERRIDE*/STR_NULL}, // QUERY_WIDGET_BACKGROUND {WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 20, 90, 62, 73, STR_NO, STR_NULL}, // QUERY_WIDGET_NO {WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 120, 190, 62, 73, STR_YES, STR_NULL}, // QUERY_WIDGET_YES @@ -1459,6 +1492,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_RED, QUERY_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_RED, QUERY_WIDGET_CAPTION), SetDataTip(STR_NULL, STR_NULL), + NWidget(WWT_SHADEBOX, COLOUR_RED, QUERY_WIDGET_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_RED, QUERY_WIDGET_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 48), @@ -1473,7 +1507,7 @@ static const WindowDesc _query_desc( WDP_CENTER, WDP_CENTER, 210, 82, 210, 82, WC_CONFIRM_POPUP_QUERY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_DEF_WIDGET | WDF_MODAL, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_DEF_WIDGET | WDF_MODAL | WDF_SHADE_BUTTON, _query_widgets, _nested_query_widgets, lengthof(_nested_query_widgets) ); @@ -1495,6 +1529,7 @@ enum SaveLoadWindowWidgets { SLWW_CLOSE = 0, SLWW_WINDOWTITLE, + SLWW_SHADEBOX, SLWW_SORT_BYNAME, SLWW_SORT_BYDATE, SLWW_BACKGROUND, @@ -1511,7 +1546,8 @@ static const Widget _load_dialog_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SLWW_CLOSE -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 256, 0, 13, STR_NULL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SLWW_WINDOWTITLE +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 244, 0, 13, STR_NULL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SLWW_WINDOWTITLE +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_GREY, 245, 256, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // SLWW_SHADEBOX { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP}, // SLWW_SORT_BYNAME { WWT_PUSHTXTBTN, RESIZE_RIGHT, COLOUR_GREY, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP}, // SLWW_SORT_BYDATE { WWT_PANEL, RESIZE_RIGHT, COLOUR_GREY, 0, 256, 26, 47, 0x0, STR_NULL}, // SLWW_BACKGROUND @@ -1533,6 +1569,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, SLWW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, SLWW_WINDOWTITLE), + NWidget(WWT_SHADEBOX, COLOUR_GREY, SLWW_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_SORT_BYNAME), SetMinimalSize(128, 12), SetDataTip(STR_SORT_BY_NAME, STR_SORT_ORDER_TIP), @@ -1571,7 +1608,8 @@ static const Widget _save_dialog_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SLWW_CLOSE -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 256, 0, 13, STR_NULL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SLWW_WINDOWTITLE +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 244, 0, 13, STR_NULL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SLWW_WINDOWTITLE +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_GREY, 245, 256, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // SLWW_SHADEBOX { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP}, // SLWW_SORT_BYNAME { WWT_PUSHTXTBTN, RESIZE_RIGHT, COLOUR_GREY, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP}, // SLWW_SORT_BYDATE { WWT_PANEL, RESIZE_RIGHT, COLOUR_GREY, 0, 256, 26, 47, 0x0, STR_NULL}, // SLWW_BACKGROUND @@ -1593,6 +1631,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, SLWW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, SLWW_WINDOWTITLE), + NWidget(WWT_SHADEBOX, COLOUR_GREY, SLWW_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_SORT_BYNAME), SetMinimalSize(128, 12), SetDataTip(STR_SORT_BY_NAME, STR_SORT_ORDER_TIP), @@ -1798,6 +1837,10 @@ SetVScrollCount(this, _fios_items.Length()); this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawFiosTexts(this->widget[SLWW_BACKGROUND].left, this->widget[SLWW_BACKGROUND].right); if (_savegame_sort_dirty) { @@ -1977,14 +2020,14 @@ static const WindowDesc _load_dialog_desc( WDP_CENTER, WDP_CENTER, 257, 154, 257, 294, WC_SAVELOAD, WC_NONE, - WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_SHADE_BUTTON, _load_dialog_widgets, _nested_load_dialog_widgets, lengthof(_nested_load_dialog_widgets) ); static const WindowDesc _save_dialog_desc( WDP_CENTER, WDP_CENTER, 257, 180, 257, 320, WC_SAVELOAD, WC_NONE, - WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_SHADE_BUTTON, _save_dialog_widgets, _nested_save_dialog_widgets, lengthof(_nested_save_dialog_widgets) ); Index: src/engine_gui.cpp =================================================================== --- src/engine_gui.cpp (revision 16883) +++ src/engine_gui.cpp (working copy) @@ -36,6 +36,7 @@ enum EnginePreviewWidgets { EPW_CLOSE, ///< Close button EPW_CAPTION, ///< Title bar/caption + EPW_SHADE, ///< Shade button EPW_BACKGROUND, ///< Background EPW_NO, ///< No button EPW_YES, ///< Yes button @@ -43,7 +44,8 @@ static const Widget _engine_preview_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_LIGHT_BLUE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // EPW_CLOSE -{ WWT_CAPTION, RESIZE_NONE, COLOUR_LIGHT_BLUE, 11, 299, 0, 13, STR_ENGINE_PREVIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // EPW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_LIGHT_BLUE, 11, 287, 0, 13, STR_ENGINE_PREVIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // EPW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_LIGHT_BLUE, 288, 299, 0, 13, 0x0, STR_SHADE_BUTTON}, // EPW_SHADE { WWT_PANEL, RESIZE_NONE, COLOUR_LIGHT_BLUE, 0, 299, 14, 191, 0x0, STR_NULL}, // EPW_BACKGROUND { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_LIGHT_BLUE, 85, 144, 172, 183, STR_NO, STR_NULL}, // EPW_NO { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_LIGHT_BLUE, 155, 214, 172, 183, STR_YES, STR_NULL}, // EPW_YES @@ -54,6 +56,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE, EPW_CLOSE), NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, EPW_CAPTION), SetDataTip(STR_ENGINE_PREVIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_LIGHT_BLUE, EPW_SHADE), EndContainer(), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE, EPW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 158), @@ -95,6 +98,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + EngineID engine = this->window_number; SetDParam(0, GetEngineCategoryName(engine)); DrawStringMultiLine(this->widget[EPW_BACKGROUND].left + 2, this->widget[EPW_BACKGROUND].right - 2, 18, 80, STR_ENGINE_PREVIEW_MESSAGE, TC_FROMSTRING, SA_CENTER); @@ -125,7 +131,7 @@ static const WindowDesc _engine_preview_desc( WDP_CENTER, WDP_CENTER, 300, 192, 300, 192, WC_ENGINE_PREVIEW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_CONSTRUCTION, _engine_preview_widgets, _nested_engine_preview_widgets, lengthof(_nested_engine_preview_widgets) ); Index: src/smallmap_gui.cpp =================================================================== --- src/smallmap_gui.cpp (revision 16883) +++ src/smallmap_gui.cpp (working copy) @@ -28,6 +28,7 @@ enum SmallMapWindowWidgets { SM_WIDGET_CLOSEBOX, SM_WIDGET_CAPTION, + SM_WIDGET_SHADEBOX, SM_WIDGET_STICKYBOX, SM_WIDGET_MAP_BORDER, SM_WIDGET_MAP, @@ -49,7 +50,8 @@ static const Widget _smallmap_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_BROWN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SM_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_BROWN, 11, 337, 0, 13, STR_SMALLMAP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SM_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_BROWN, 11, 325, 0, 13, STR_SMALLMAP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SM_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_BROWN, 326, 337, 0, 13, 0x0, STR_SHADE_BUTTON}, // SM_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_BROWN, 338, 349, 0, 13, 0x0, STR_STICKY_BUTTON}, // SM_WIDGET_STICKYBOX { WWT_PANEL, RESIZE_RB, COLOUR_BROWN, 0, 349, 14, 157, 0x0, STR_NULL}, // SM_WIDGET_MAP_BORDER { WWT_INSET, RESIZE_RB, COLOUR_BROWN, 2, 347, 16, 155, 0x0, STR_NULL}, // SM_WIDGET_MAP @@ -78,6 +80,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN, SM_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_BROWN, SM_WIDGET_CAPTION), SetDataTip(STR_SMALLMAP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_BROWN, SM_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_BROWN, SM_WIDGET_STICKYBOX), EndContainer(), /* Small map display. */ @@ -891,6 +894,9 @@ SetDParam(0, STR_SMALLMAP_TYPE_CONTOURS + this->map_type); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + const Widget *legend = &this->widget[SM_WIDGET_LEGEND]; int y_org = legend->top + 1; @@ -1115,7 +1121,7 @@ static const WindowDesc _smallmap_desc( WDP_AUTO, WDP_AUTO, 350, 214, 446, 314, WC_SMALLMAP, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _smallmap_widgets, _nested_smallmap_widgets, lengthof(_nested_smallmap_widgets) ); @@ -1128,6 +1134,7 @@ enum ExtraViewportWindowWidgets { EVW_CLOSE, EVW_CAPTION, + EVW_SHADEBOX, EVW_STICKY, EVW_BACKGROUND, EVW_VIEWPORT, @@ -1143,7 +1150,8 @@ /* Extra ViewPort Window Stuff */ static const Widget _extra_view_port_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 287, 0, 13, STR_EXTRA_VIEW_PORT_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 275, 0, 13, STR_EXTRA_VIEW_PORT_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 276, 287, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 288, 299, 0, 13, 0x0, STR_STICKY_BUTTON}, { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 299, 14, 33, 0x0, STR_NULL}, { WWT_INSET, RESIZE_RB, COLOUR_GREY, 2, 297, 16, 31, 0x0, STR_NULL}, @@ -1161,6 +1169,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, EVW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, EVW_CAPTION), SetDataTip(STR_EXTRA_VIEW_PORT_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, EVW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, EVW_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, EVW_BACKGROUND), @@ -1217,6 +1226,10 @@ SetDParam(0, this->window_number + 1); this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->DrawViewport(); } @@ -1282,7 +1295,7 @@ static const WindowDesc _extra_view_port_desc( WDP_AUTO, WDP_AUTO, 300, 68, 300, 268, WC_EXTRA_VIEW_PORT, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _extra_view_port_widgets, _nested_extra_view_port_widgets, lengthof(_nested_extra_view_port_widgets) ); Index: src/industry_gui.cpp =================================================================== --- src/industry_gui.cpp (revision 16883) +++ src/industry_gui.cpp (working copy) @@ -65,6 +65,7 @@ enum DynamicPlaceIndustriesWidgets { DPIW_CLOSEBOX = 0, DPIW_CAPTION, + DPIW_SHADEBOX, DPIW_MATRIX_WIDGET, DPIW_SCROLLBAR, DPIW_INFOPANEL, @@ -75,7 +76,8 @@ /** Widget definition of the dynamic place industries gui */ static const Widget _build_industry_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // DPIW_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_DARK_GREEN, 11, 169, 0, 13, STR_FUND_INDUSTRY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // DPIW_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_DARK_GREEN, 11, 157, 0, 13, STR_FUND_INDUSTRY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // DPIW_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_DARK_GREEN, 158, 169, 0, 13, 0x0, STR_SHADE_BUTTON}, // DPIW_SHADEBOX { WWT_MATRIX, RESIZE_RB, COLOUR_DARK_GREEN, 0, 157, 14, 118, 0x801, STR_INDUSTRY_SELECTION_HINT}, // DPIW_MATRIX_WIDGET { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_DARK_GREEN, 158, 169, 14, 118, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, // DPIW_SCROLLBAR { WWT_PANEL, RESIZE_RTB, COLOUR_DARK_GREEN, 0, 169, 119, 199, 0x0, STR_NULL}, // DPIW_INFOPANEL @@ -87,7 +89,8 @@ static const NWidgetPart _nested_build_industry_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, DPIW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, DPIW_CAPTION), SetMinimalSize(159, 14), SetDataTip(STR_FUND_INDUSTRY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetResize(1, 0), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, DPIW_CAPTION), SetMinimalSize(147, 14), SetDataTip(STR_FUND_INDUSTRY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetResize(1, 0), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, DPIW_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_DARK_GREEN, DPIW_MATRIX_WIDGET), SetMinimalSize(158, 105), SetDataTip(0x801, STR_INDUSTRY_SELECTION_HINT), SetResize(1, 1), @@ -105,7 +108,7 @@ static const WindowDesc _build_industry_desc( WDP_AUTO, WDP_AUTO, 170, 212, 170, 212, WC_BUILD_INDUSTRY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, _build_industry_widgets, _nested_build_industry_widgets, lengthof(_nested_build_industry_widgets) ); @@ -223,6 +226,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* and now with the matrix painting */ for (byte i = 0; i < this->vscroll.cap && ((i + this->vscroll.pos) < this->count); i++) { int offset = i * 13; @@ -462,6 +468,7 @@ enum IndustryViewWidgets { IVW_CLOSEBOX = 0, IVW_CAPTION, + IVW_SHADEBOX, IVW_STICKY, IVW_BACKGROUND, IVW_VIEWPORT, @@ -500,6 +507,9 @@ SetDParam(0, this->window_number); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + if (HasBit(ind->callback_flags, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(ind->callback_flags, CBM_IND_PRODUCTION_256_TICKS)) { for (byte j = 0; j < lengthof(i->accepts_cargo); j++) { if (i->accepts_cargo[j] == CT_INVALID) continue; @@ -681,7 +691,8 @@ /** Widget definition of the view industy gui */ static const Widget _industry_view_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_CREAM, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // IVW_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_CREAM, 11, 247, 0, 13, STR_INDUSTRY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // IVW_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_CREAM, 11, 235, 0, 13, STR_INDUSTRY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // IVW_CAPTION +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_CREAM, 236, 247, 0, 13, 0x0, STR_SHADE_BUTTON}, // IVW_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_CREAM, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, // IVW_STICKY { WWT_PANEL, RESIZE_RB, COLOUR_CREAM, 0, 259, 14, 105, 0x0, STR_NULL}, // IVW_BACKGROUND { WWT_INSET, RESIZE_RB, COLOUR_CREAM, 2, 257, 16, 103, 0x0, STR_NULL}, // IVW_VIEWPORT @@ -695,7 +706,8 @@ static const NWidgetPart _nested_industry_view_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_CREAM, IVW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_CREAM, IVW_CAPTION), SetMinimalSize(237, 14), SetDataTip(STR_INDUSTRY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetResize(1, 0), + NWidget(WWT_CAPTION, COLOUR_CREAM, IVW_CAPTION), SetMinimalSize(225, 14), SetDataTip(STR_INDUSTRY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetResize(1, 0), + NWidget(WWT_SHADEBOX, COLOUR_CREAM, IVW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_CREAM, IVW_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_CREAM, IVW_BACKGROUND), @@ -715,7 +727,7 @@ static const WindowDesc _industry_view_desc( WDP_AUTO, WDP_AUTO, 260, 120, 260, 120, WC_INDUSTRY_VIEW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _industry_view_widgets, _nested_industry_view_widgets, lengthof(_nested_industry_view_widgets) ); @@ -728,6 +740,7 @@ enum IndustryDirectoryWidgets { IDW_CLOSEBOX = 0, IDW_CAPTION, + IDW_SHADEBOX, IDW_STICKY, IDW_DROPDOWN_ORDER, IDW_DROPDOWN_CRITERIA, @@ -740,7 +753,8 @@ /** Widget definition of the industy directory gui */ static const Widget _industry_directory_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_BROWN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // IDW_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_BROWN, 11, 415, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // IDW_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_BROWN, 11, 403, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // IDW_CAPTION +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_BROWN, 404, 415, 0, 13, 0x0, STR_SHADE_BUTTON}, // IDW_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_BROWN, 416, 427, 0, 13, 0x0, STR_STICKY_BUTTON}, // IDW_STICKY { WWT_TEXTBTN, RESIZE_NONE, COLOUR_BROWN, 0, 80, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP}, // IDW_DROPDOWN_ORDER @@ -756,7 +770,8 @@ static const NWidgetPart _nested_industry_directory_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN, IDW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_BROWN, IDW_CAPTION), SetMinimalSize(405, 14), SetDataTip(STR_INDUSTRYDIR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetResize(1, 0), + NWidget(WWT_CAPTION, COLOUR_BROWN, IDW_CAPTION), SetMinimalSize(393, 14), SetDataTip(STR_INDUSTRYDIR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetResize(1, 0), + NWidget(WWT_SHADEBOX, COLOUR_BROWN, IDW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_BROWN, IDW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -936,6 +951,10 @@ SetVScrollCount(this, this->industries.Length()); this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->DrawSortButtonState(IDW_DROPDOWN_ORDER, this->industries.IsDescSortOrder() ? SBS_DOWN : SBS_UP); int max = min(this->vscroll.pos + this->vscroll.cap, this->industries.Length()); @@ -1051,7 +1070,7 @@ static const WindowDesc _industry_directory_desc( WDP_AUTO, WDP_AUTO, 428, 190, 428, 190, WC_INDUSTRY_DIRECTORY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _industry_directory_widgets, _nested_industry_directory_widgets, lengthof(_nested_industry_directory_widgets) ); Index: src/station_gui.h =================================================================== --- src/station_gui.h (revision 16883) +++ src/station_gui.h (working copy) @@ -11,16 +11,17 @@ enum StationViewWidgets { SVW_CLOSEBOX = 0, ///< Close 'X' button SVW_CAPTION = 1, ///< Caption of the window - SVW_STICKYBOX = 2, ///< Sticky button - SVW_WAITING = 3, ///< List of waiting cargo - SVW_SCROLLBAR = 4, ///< Scrollbar - SVW_ACCEPTLIST = 5, ///< List of accepted cargos - SVW_RATINGLIST = 5, ///< Ratings of cargos - SVW_LOCATION = 6, ///< 'Location' button - SVW_RATINGS = 7, ///< 'Ratings' button - SVW_ACCEPTS = 7, ///< 'Accepts' button - SVW_RENAME = 8, ///< 'Rename' button - SVW_TRAINS = 9, ///< List of scheduled trains button + SVW_SHADEBOX = 2, ///< Shade button + SVW_STICKYBOX = 3, ///< Sticky button + SVW_WAITING = 4, ///< List of waiting cargo + SVW_SCROLLBAR = 5, ///< Scrollbar + SVW_ACCEPTLIST = 6, ///< List of accepted cargos + SVW_RATINGLIST = 6, ///< Ratings of cargos + SVW_LOCATION = 7, ///< 'Location' button + SVW_RATINGS = 8, ///< 'Ratings' button + SVW_ACCEPTS = 8, ///< 'Accepts' button + SVW_RENAME = 9, ///< 'Rename' button + SVW_TRAINS = 10, ///< List of scheduled trains button SVW_ROADVEHS, ///< List of scheduled road vehs button SVW_PLANES, ///< List of scheduled planes button SVW_SHIPS, ///< List of scheduled ships button Index: src/build_vehicle_gui.cpp =================================================================== --- src/build_vehicle_gui.cpp (revision 16883) +++ src/build_vehicle_gui.cpp (working copy) @@ -33,6 +33,7 @@ enum BuildVehicleWidgets { BUILD_VEHICLE_WIDGET_CLOSEBOX = 0, BUILD_VEHICLE_WIDGET_CAPTION, + BUILD_VEHICLE_WIDGET_SHADEBOX, BUILD_VEHICLE_WIDGET_LIST_CONTROL, BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, @@ -48,7 +49,8 @@ static const Widget _build_vehicle_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW }, // BUILD_VEHICLE_WIDGET_CLOSEBOX - { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 239, 0, 13, 0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, // BUILD_VEHICLE_WIDGET_CAPTION + { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 227, 0, 13, 0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, // BUILD_VEHICLE_WIDGET_CAPTION + { WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_GREY, 228, 239, 0, 13, 0x0, STR_SHADE_BUTTON }, // BUILD_VEHICLE_WIDGET_SHADEBOX { WWT_PANEL, RESIZE_RIGHT, COLOUR_GREY, 0, 239, 14, 37, 0x0, STR_NULL }, // BUILD_VEHICLE_WIDGET_LIST_CONTROL { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 80, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP}, // BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING { WWT_DROPDOWN, RESIZE_RIGHT, COLOUR_GREY, 81, 239, 14, 25, 0x0, STR_SORT_CRITERIA_TIP}, // BUILD_VEHICLE_WIDGET_SORT_DROPDOWN @@ -68,6 +70,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, BUILD_VEHICLE_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, BUILD_VEHICLE_WIDGET_CAPTION), SetFill(1, 0), SetResize(1, 0), SetDataTip(0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, BUILD_VEHICLE_WIDGET_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, BUILD_VEHICLE_WIDGET_LIST_CONTROL), /* Sort order + criteria button row. */ @@ -1176,6 +1179,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawEngineList(this->vehicle_type, this->widget[BUILD_VEHICLE_WIDGET_LIST].left + 2, this->widget[BUILD_VEHICLE_WIDGET_LIST].right, this->widget[BUILD_VEHICLE_WIDGET_LIST].top + 1, &this->eng_list, this->vscroll.pos, max, this->sel_engine, 0, DEFAULT_GROUP); if (this->sel_engine != INVALID_ENGINE) { @@ -1254,7 +1260,7 @@ static const WindowDesc _build_vehicle_desc( WDP_AUTO, WDP_AUTO, 240, 186, 240, 268, WC_BUILD_VEHICLE, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_CONSTRUCTION, _build_vehicle_widgets, _nested_build_vehicle_widgets, lengthof(_nested_build_vehicle_widgets) ); Index: src/autoreplace_gui.cpp =================================================================== --- src/autoreplace_gui.cpp (revision 16883) +++ src/autoreplace_gui.cpp (working copy) @@ -27,6 +27,7 @@ enum ReplaceVehicleWindowWidgets { RVW_WIDGET_CLOSEBOX, RVW_WIDGET_CAPTION, + RVW_WIDGET_SHADEBOX, RVW_WIDGET_STICKY, /* Left and right matrix + details. */ @@ -286,6 +287,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* sets up the string for the vehicle that is being replaced to */ if (selected_id[0] != INVALID_ENGINE) { if (!EngineHasReplacementForCompany(c, selected_id[0], selected_group)) { @@ -439,7 +443,8 @@ static const Widget _replace_vehicle_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // RVW_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 443, 0, 13, STR_REPLACE_VEHICLES_WHITE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // RVW_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 431, 0, 13, STR_REPLACE_VEHICLES_WHITE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // RVW_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 432, 443, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // RVW_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 444, 455, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // RVW_WIDGET_STICKY { WWT_MATRIX, RESIZE_BOTTOM, COLOUR_GREY, 0, 215, 14, 13, 0x1, STR_REPLACE_HELP_LEFT_ARRAY}, // RVW_WIDGET_LEFT_MATRIX @@ -465,7 +470,8 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, RVW_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, RVW_WIDGET_CAPTION), SetMinimalSize(433, 14), SetDataTip(STR_REPLACE_VEHICLES_WHITE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, RVW_WIDGET_CAPTION), SetMinimalSize(409, 14), SetDataTip(STR_REPLACE_VEHICLES_WHITE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, RVW_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, RVW_WIDGET_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -501,14 +507,15 @@ static const WindowDesc _replace_rail_vehicle_desc( WDP_AUTO, WDP_AUTO, 456, 140, 456, 140, WC_REPLACE_VEHICLE, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, _replace_vehicle_widgets, _nested_replace_rail_vehicle_widgets, lengthof(_nested_replace_rail_vehicle_widgets) ); static const NWidgetPart _nested_replace_vehicle_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, RVW_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, RVW_WIDGET_CAPTION), SetMinimalSize(433, 14), SetDataTip(STR_REPLACE_VEHICLES_WHITE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, RVW_WIDGET_CAPTION), SetMinimalSize(421, 14), SetDataTip(STR_REPLACE_VEHICLES_WHITE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, RVW_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, RVW_WIDGET_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -540,7 +547,7 @@ static const WindowDesc _replace_vehicle_desc( WDP_AUTO, WDP_AUTO, 456, 118, 456, 118, WC_REPLACE_VEHICLE, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, _replace_vehicle_widgets, _nested_replace_vehicle_widgets, lengthof(_nested_replace_vehicle_widgets) ); Index: src/music_gui.cpp =================================================================== --- src/music_gui.cpp (revision 16883) +++ src/music_gui.cpp (working copy) @@ -195,6 +195,7 @@ enum MusicTrackSelectionWidgets { MTSW_CLOSE, MTSW_CAPTION, + MTSW_SHADEBOX, MTSW_BACKGROUND, MTSW_LIST_LEFT, MTSW_LIST_RIGHT, @@ -221,6 +222,9 @@ this->LowerWidget(MTSW_LIST_RIGHT); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + GfxFillRect( 3, 23, 3 + 177, 23 + 191, 0); GfxFillRect(251, 23, 251 + 177, 23 + 191, 0); @@ -319,7 +323,8 @@ static const Widget _music_track_selection_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // MTSW_CLOSE -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 431, 0, 13, STR_PLAYLIST_MUSIC_PROGRAM_SELECTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // MTSW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 419, 0, 13, STR_PLAYLIST_MUSIC_PROGRAM_SELECTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // MTSW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 420, 431, 0, 13, 0x0, STR_SHADE_BUTTON}, // MTSW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 431, 14, 217, 0x0, STR_NULL}, // MTSW_BACKGROUND { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 2, 181, 22, 215, 0x0, STR_MUSIC_TOOLTIP_CLICK_ON_MUSIC_TRACK_TO}, // MTSW_LIST_LEFT { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 250, 429, 22, 215, 0x0, STR_CLICK_ON_TRACK_TO_REMOVE}, // MTSW_LIST_RIGHT @@ -340,6 +345,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, MTSW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, MTSW_CAPTION), SetDataTip(STR_PLAYLIST_MUSIC_PROGRAM_SELECTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, MTSW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, MTSW_BACKGROUND), NWidget(NWID_HORIZONTAL), SetPIP(2, 4, 2), @@ -379,7 +385,7 @@ static const WindowDesc _music_track_selection_desc( 104, 131, 432, 218, 432, 218, WC_MUSIC_TRACK_SELECTION, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _music_track_selection_widgets, _nested_music_track_selection_widgets, lengthof(_nested_music_track_selection_widgets) ); @@ -391,6 +397,7 @@ enum MusicWidgets { MW_CLOSE, MW_CAPTION, + MW_SHADEBOX, MW_PREV, MW_NEXT, MW_STOP, @@ -421,6 +428,9 @@ this->RaiseWidget(MW_INFO); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + GfxFillRect(187, 16, 200, 33, 0); for (uint i = 0; i != 8; i++) { @@ -548,7 +558,8 @@ static const Widget _music_window_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // MW_CLOSE -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 299, 0, 13, STR_MUSIC_JAZZ_JUKEBOX_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // MW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 287, 0, 13, STR_MUSIC_JAZZ_JUKEBOX_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // MW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 288, 299, 0, 13, 0x0, STR_SHADE_BUTTON}, // MW_SHADEBOX { WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 0, 21, 14, 35, SPR_IMG_SKIP_TO_PREV, STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK}, // MW_PREV { WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 22, 43, 14, 35, SPR_IMG_SKIP_TO_NEXT, STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION}, // MW_NEXT { WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 44, 65, 14, 35, SPR_IMG_STOP_MUSIC, STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC}, // MW_STOP @@ -572,6 +583,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, MW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, MW_CAPTION), SetDataTip(STR_MUSIC_JAZZ_JUKEBOX_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, MW_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -609,7 +621,7 @@ static const WindowDesc _music_window_desc( 0, 22, 300, 66, 300, 66, WC_MUSIC_WINDOW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _music_window_widgets, _nested_music_window_widgets, lengthof(_nested_music_window_widgets) ); Index: src/airport_gui.cpp =================================================================== --- src/airport_gui.cpp (revision 16883) +++ src/airport_gui.cpp (working copy) @@ -47,6 +47,7 @@ enum { ATW_CLOSEBOX, ATW_CAPTION, + ATW_SHADEBOX, ATW_STICKYBOX, ATW_AIRPORT, ATW_DEMOLISH @@ -133,7 +134,8 @@ static const Widget _air_toolbar_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW }, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 51, 0, 13, STR_TOOLBAR_AIRCRAFT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 39, 0, 13, STR_TOOLBAR_AIRCRAFT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 40, 51, 0, 13, 0x0, STR_SHADE_BUTTON }, { WWT_STICKYBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 52, 63, 0, 13, 0x0, STR_STICKY_BUTTON }, { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 41, 14, 35, SPR_IMG_AIRPORT, STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP }, { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 42, 63, 14, 35, SPR_IMG_DYNAMITE, STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC }, @@ -143,7 +145,8 @@ static const NWidgetPart _nested_air_toolbar_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, ATW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, ATW_CAPTION), SetMinimalSize(41, 14), SetDataTip(STR_TOOLBAR_AIRCRAFT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, ATW_CAPTION), SetMinimalSize(29, 14), SetDataTip(STR_TOOLBAR_AIRCRAFT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, ATW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, ATW_STICKYBOX), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -155,7 +158,7 @@ static const WindowDesc _air_toolbar_desc( WDP_ALIGN_TBR, 22, 64, 36, 64, 36, WC_BUILD_TOOLBAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, _air_toolbar_widgets, _nested_air_toolbar_widgets, lengthof(_nested_air_toolbar_widgets) ); @@ -171,6 +174,7 @@ enum AirportPickerWidgets { BAW_CLOSEBOX, BAW_CAPTION, + BAW_SHADEBOX, /* Panels and labels. */ BAW_SMALL_AIRPORTS_PANEL, BAW_SMALL_AIRPORTS_LABEL, @@ -229,6 +233,9 @@ int rad = _settings_game.station.modified_catchment ? airport->catchment : (uint)CA_UNMODIFIED; uint16 top = this->widget[BAW_BTN_DOHILIGHT].bottom + WD_PAR_VSEP_NORMAL; + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* only show the station (airport) noise, if the noise option is activated */ if (_settings_game.economy.station_noise_level) { /* show the noise of the selected airport */ @@ -306,7 +313,8 @@ static const Widget _build_airport_picker_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BAW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 147, 0, 13, STR_STATION_BUILD_AIRPORT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BAW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 135, 0, 13, STR_STATION_BUILD_AIRPORT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BAW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 136, 147, 0, 13, 0x0, STR_SHADE_BUTTON }, // BAW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 147, 14, 52, 0x0, STR_NULL}, // BAW_SMALL_AIRPORTS_PANEL { WWT_LABEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 147, 14, 27, STR_SMALL_AIRPORTS, STR_NULL}, // BAW_SMALL_AIRPORTS_LABEL { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 147, 53, 91, 0x0, STR_NULL}, // BAW_LARGE_AIRPORTS_PANEL @@ -334,7 +342,8 @@ static const NWidgetPart _nested_build_airport_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BAW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BAW_CAPTION), SetMinimalSize(137, 14), SetDataTip(STR_STATION_BUILD_AIRPORT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BAW_CAPTION), SetMinimalSize(125, 14), SetDataTip(STR_STATION_BUILD_AIRPORT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BAW_SHADEBOX), EndContainer(), /* Small airports. */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BAW_SMALL_AIRPORTS_PANEL), @@ -414,7 +423,7 @@ static const WindowDesc _build_airport_desc( WDP_AUTO, WDP_AUTO, 148, 245, 148, 245, WC_BUILD_STATION, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_CONSTRUCTION, _build_airport_picker_widgets, _nested_build_airport_widgets, lengthof(_nested_build_airport_widgets) ); Index: src/newgrf_gui.cpp =================================================================== --- src/newgrf_gui.cpp (revision 16883) +++ src/newgrf_gui.cpp (working copy) @@ -116,6 +116,7 @@ enum AddNewGRFWindowWidgets { ANGRFW_CLOSEBOX = 0, ANGRFW_CAPTION, + ANGRFW_SHADEBOX, ANGRFW_BACKGROUND, ANGRFW_GRF_LIST, ANGRFW_SCROLLBAR, @@ -155,6 +156,9 @@ this->SetWidgetDisabledState(ANGRFW_ADD, this->sel == NULL || this->sel->IsOpenTTDBaseGRF()); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + GfxFillRect(wl->left + 1, wl->top + 1, wl->right, wl->bottom, 0xD7); uint y = wl->top + 1; @@ -236,7 +240,8 @@ /* Widget definition for the add a newgrf window */ static const Widget _newgrf_add_dlg_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW }, // ANGRFW_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 306, 0, 13, STR_NEWGRF_ADD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, // ANGRFW_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 294, 0, 13, STR_NEWGRF_ADD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, // ANGRFW_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_GREY, 295, 306, 0, 13, 0x0, STR_SHADE_BUTTON }, // ANGRFW_SHADEBOX { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 294, 14, 121, 0x0, STR_NULL }, // ANGRFW_BACKGROUND { WWT_INSET, RESIZE_RB, COLOUR_GREY, 2, 292, 16, 119, 0x0, STR_NULL }, // ANGRFW_GRF_LIST { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 295, 306, 14, 121, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST }, // ANGRFW_SCROLLBAR @@ -251,6 +256,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, ANGRFW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, ANGRFW_CAPTION), SetDataTip(STR_NEWGRF_ADD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, ANGRFW_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_GREY, ANGRFW_BACKGROUND), @@ -270,7 +276,7 @@ static const WindowDesc _newgrf_add_dlg_desc( WDP_CENTER, WDP_CENTER, 307, 237, 307, 337, WC_SAVELOAD, WC_NONE, - WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_SHADE_BUTTON, _newgrf_add_dlg_widgets, _nested_newgrf_add_dlg_widgets, lengthof(_nested_newgrf_add_dlg_widgets) ); @@ -299,6 +305,7 @@ enum ShowNewGRFStateWidgets { SNGRFS_CLOSEBOX = 0, SNGRFS_CAPTION, + SNGRFS_SHADEBOX, SNGRFS_BACKGROUND1, SNGRFS_PRESET_LIST, SNGRFS_PRESET_SAVE, @@ -426,6 +433,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Draw NewGRF list */ int y = this->widget[SNGRFS_FILE_LIST].top; int i = 0; @@ -744,7 +754,8 @@ /* Widget definition of the manage newgrfs window */ static const Widget _newgrf_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW }, // SNGRFS_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 299, 0, 13, STR_NEWGRF_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, // SNGRFS_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 287, 0, 13, STR_NEWGRF_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, // SNGRFS_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_MAUVE, 288, 299, 0, 13, 0x0, STR_SHADE_BUTTON }, // SNGRFS_SHADEBOX { WWT_PANEL, RESIZE_RIGHT, COLOUR_MAUVE, 0, 299, 14, 29, STR_NULL, STR_NULL }, // SNGRFS_BACKGROUND1 { WWT_DROPDOWN, RESIZE_RIGHT, COLOUR_YELLOW, 10, 103, 16, 27, STR_EMPTY, STR_NEWGRF_PRESET_LIST_TIP }, // SNGRFS_PRESET_LIST { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_YELLOW, 104, 196, 16, 27, STR_NEWGRF_PRESET_SAVE, STR_NEWGRF_PRESET_SAVE_TIP }, // SNGRFS_PRESET_SAVE @@ -769,6 +780,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE, SNGRFS_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_MAUVE, SNGRFS_CAPTION), SetDataTip(STR_NEWGRF_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_MAUVE, SNGRFS_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE, SNGRFS_BACKGROUND1), NWidget(NWID_HORIZONTAL), SetPadding(2, 10, 2, 10), @@ -807,7 +819,7 @@ static const WindowDesc _newgrf_desc( WDP_CENTER, WDP_CENTER, 300, 263, 300, 263, WC_GAME_OPTIONS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_SHADE_BUTTON, _newgrf_widgets, _nested_newgrf_widgets, lengthof(_nested_newgrf_widgets) ); Index: src/terraform_gui.cpp =================================================================== --- src/terraform_gui.cpp (revision 16883) +++ src/terraform_gui.cpp (working copy) @@ -188,6 +188,7 @@ enum TerraformToolbarWidgets { TTW_CLOSEBOX = 0, ///< Close window button TTW_CAPTION, ///< Window caption + TTW_SHADEBOX, ///< Shade window button TTW_STICKY, ///< Sticky window button TTW_SEPERATOR, ///< Thin seperator line between level land button and demolish button TTW_BUTTONS_START, ///< Start of pushable buttons @@ -312,6 +313,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, TTW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, TTW_CAPTION), SetDataTip(STR_LANDSCAPING_TOOLBAR, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, TTW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, TTW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -338,7 +340,7 @@ static const WindowDesc _terraform_desc( WDP_ALIGN_TBR, 22 + 36, 158, 36, 158, 36, WC_SCEN_LAND_GEN, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, NULL, _nested_terraform_widgets, lengthof(_nested_terraform_widgets) ); @@ -490,6 +492,7 @@ ETTW_START = 0, ///< Used for iterations ETTW_CLOSEBOX = ETTW_START, ///< Close window button ETTW_CAPTION, ///< Window caption + ETTW_SHADEBOX, ///< Shade window button ETTW_STICKY, ///< Sticky window button ETTW_BACKGROUND, ///< Background of the lower part of the window ETTW_DOTS, ///< Invisible widget for rendering the terraform size on. @@ -512,6 +515,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, ETTW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, ETTW_CAPTION), SetDataTip(STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, ETTW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, ETTW_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, ETTW_BACKGROUND), @@ -662,6 +666,9 @@ virtual void OnPaint() { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + if (this->IsWidgetLowered(ETTW_LOWER_LAND) || this->IsWidgetLowered(ETTW_RAISE_LAND)) { // change area-size if raise/lower corner is selected SetTileSelectSize(_terraform_size, _terraform_size); } @@ -776,7 +783,7 @@ static const WindowDesc _scen_edit_land_gen_desc( WDP_AUTO, WDP_AUTO, 163, 103, 163, 103, WC_SCEN_LAND_GEN, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, NULL, _nested_scen_edit_land_gen_widgets, lengthof(_nested_scen_edit_land_gen_widgets) ); Index: src/rail_gui.cpp =================================================================== --- src/rail_gui.cpp (revision 16883) +++ src/rail_gui.cpp (working copy) @@ -272,6 +272,7 @@ enum RailToolbarWidgets { RTW_CLOSEBOX = 0, RTW_CAPTION, + RTW_SHADEBOX, RTW_STICKY, RTW_SPACER, RTW_BUILD_NS, @@ -791,6 +792,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, RTW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, RTW_CAPTION), SetDataTip(STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, RTW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, RTW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -831,7 +833,7 @@ static const WindowDesc _build_rail_desc( WDP_ALIGN_TBR, 22, 350, 36, 350, 36, WC_BUILD_TOOLBAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, NULL, _nested_build_rail_widgets, lengthof(_nested_build_rail_widgets) ); @@ -899,6 +901,7 @@ enum BuildRailStationWidgets { BRSW_CLOSEBOX = 0, BRSW_CAPTION, + BRSW_SHADEBOX, BRSW_BACKGROUND, BRSW_ORIENT_LABEL, ///< Text label 'Orientation'. @@ -1055,6 +1058,9 @@ SetDParam(0, GetStationClassName(_railstation.station_class)); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Set up a clipping area for the '/' station preview */ int width = this->widget[BRSW_PLATFORM_DIR_X].right - this->widget[BRSW_PLATFORM_DIR_X].left + 1; int height = this->widget[BRSW_PLATFORM_DIR_X].bottom - this->widget[BRSW_PLATFORM_DIR_X].top + 1; @@ -1295,7 +1301,8 @@ /** Widget definition of the standard build rail station window */ static const Widget _station_builder_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BRSW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 147, 0, 13, STR_STATION_BUILD_RAIL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 135, 0, 13, STR_STATION_BUILD_RAIL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 136, 147, 0, 13, 0x0, STR_SHADE_BUTTON}, // BRSW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 147, 14, 199, 0x0, STR_NULL}, // BRSW_BACKGROUND { WWT_LABEL, RESIZE_NONE, COLOUR_DARK_GREEN, 2, 145, 15, 25, STR_STATION_BUILD_ORIENTATION, STR_NULL}, // BRSW_ORIENT_LABEL { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 7, 72, 26, 73, 0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP}, // BRSW_PLATFORM_DIR_X @@ -1330,6 +1337,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BRSW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BRSW_CAPTION), SetDataTip(STR_STATION_BUILD_RAIL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BRSW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRSW_BACKGROUND), NWidget(WWT_LABEL, COLOUR_DARK_GREEN, BRSW_ORIENT_LABEL), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetPadding(1, 2, 0, 2), @@ -1377,7 +1385,8 @@ /** Widget definition of the build NewGRF rail station window */ static const Widget _newstation_builder_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BRSW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 147, 0, 13, STR_STATION_BUILD_RAIL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 135, 0, 13, STR_STATION_BUILD_RAIL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 136, 147, 0, 13, 0x0, STR_SHADE_BUTTON}, // BRSW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 147, 14, 289, 0x0, STR_NULL}, // BRSW_BACKGROUND { WWT_LABEL, RESIZE_NONE, COLOUR_ORANGE, 2, 145, 105, 115, STR_STATION_BUILD_ORIENTATION, STR_NULL}, // BRSW_ORIENT_LABEL { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 7, 72, 116, 163, 0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP}, // BRSW_PLATFORM_DIR_X @@ -1417,6 +1426,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BRSW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BRSW_CAPTION), SetDataTip(STR_STATION_BUILD_RAIL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BRSW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRSW_BACKGROUND), /* begin newstations gui additions. */ @@ -1475,7 +1485,7 @@ static const WindowDesc _station_builder_desc( WDP_AUTO, WDP_AUTO, 148, 200, 148, 200, WC_BUILD_STATION, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _station_builder_widgets, _nested_station_builder_widgets, lengthof(_nested_station_builder_widgets) ); @@ -1483,7 +1493,7 @@ static const WindowDesc _newstation_builder_desc( WDP_AUTO, WDP_AUTO, 148, 290, 148, 290, WC_BUILD_STATION, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _newstation_builder_widgets, _nested_newstation_builder_widgets, lengthof(_nested_newstation_builder_widgets) ); @@ -1501,6 +1511,7 @@ enum BuildSignalWidgets { BSW_CLOSEBOX = 0, BSW_CAPTION, + BSW_SHADEBOX, BSW_SEMAPHORE_NORM, BSW_SEMAPHORE_ENTRY, BSW_SEMAPHORE_EXIT, @@ -1554,6 +1565,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* The 'hardcoded' off sets are needed because they are reused sprites. */ this->DrawSignalSprite(BSW_SEMAPHORE_NORM, SPR_IMG_SIGNAL_SEMAPHORE_NORM, 0, 12); // xsize of sprite + 1 == 9 this->DrawSignalSprite(BSW_SEMAPHORE_ENTRY, SPR_IMG_SIGNAL_SEMAPHORE_ENTRY, -1, 13); // xsize of sprite + 1 == 10 @@ -1623,7 +1637,8 @@ /** Widget definition of the build signal window */ static const Widget _signal_builder_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BSW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 153, 0, 13, STR_SIGNAL_SELECTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BSW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 141, 0, 13, STR_SIGNAL_SELECTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BSW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 142, 153, 0, 13, 0x0, STR_SHADE_BUTTON}, // BSW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 21, 14, 40, STR_NULL, STR_BUILD_SIGNAL_SEMAPHORE_NORM_TIP}, // BSW_SEMAPHORE_NORM { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 22, 43, 14, 40, STR_NULL, STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TIP}, // BSW_SEMAPHORE_ENTRY @@ -1651,6 +1666,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BSW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BSW_CAPTION), SetDataTip( STR_SIGNAL_SELECTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BSW_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BSW_SEMAPHORE_NORM), SetMinimalSize(22, 27), SetDataTip(STR_NULL, STR_BUILD_SIGNAL_SEMAPHORE_NORM_TIP), EndContainer(), @@ -1683,7 +1699,7 @@ static const WindowDesc _signal_builder_desc( WDP_AUTO, WDP_AUTO, 154, 68, 154, 68, WC_BUILD_SIGNAL, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _signal_builder_widgets, _nested_signal_builder_widgets, lengthof(_nested_signal_builder_widgets) ); @@ -1699,6 +1715,7 @@ enum BuildRailDepotWidgets { BRDW_CLOSEBOX = 0, BRDW_CAPTION, + BRDW_SHADEBOX, BRDW_BACKGROUND, BRDW_DEPOT_NE, BRDW_DEPOT_SE, @@ -1717,6 +1734,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawTrainDepotSprite(this->widget[BRDW_DEPOT_NE].left - 1, this->widget[BRDW_DEPOT_NE].top, DIAGDIR_NE, _cur_railtype); DrawTrainDepotSprite(this->widget[BRDW_DEPOT_SE].left - 1, this->widget[BRDW_DEPOT_SE].top, DIAGDIR_SE, _cur_railtype); DrawTrainDepotSprite(this->widget[BRDW_DEPOT_SW].left - 1, this->widget[BRDW_DEPOT_SW].top, DIAGDIR_SW, _cur_railtype); @@ -1744,11 +1764,12 @@ static const Widget _build_depot_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BRDW_CLOSEBOX { WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 139, 0, 13, STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRDW_CAPTION -{ WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 71, 136, 17, 66, 0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION}, // BRDW_DEPOT_NE -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 71, 136, 69, 118, 0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION}, // BRDW_DEPOT_SE -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 3, 68, 69, 118, 0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION}, // BRDW_DEPOT_SW -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 3, 68, 17, 66, 0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION}, // BRDW_DEPOT_NW +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 140, 151, 0, 13, 0x0, STR_SHADE_BUTTON}, // BRDW_SHADEBOX +{ WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 151, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 78, 143, 17, 66, 0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION}, // BRDW_DEPOT_NE +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 78, 143, 69, 118, 0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION}, // BRDW_DEPOT_SE +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 8, 73, 69, 118, 0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION}, // BRDW_DEPOT_SW +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 8, 73, 17, 66, 0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION}, // BRDW_DEPOT_NW { WIDGETS_END}, }; @@ -1756,11 +1777,12 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BRDW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BRDW_CAPTION), SetMinimalSize(129, 14), SetDataTip(STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BRDW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRDW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 3), NWidget(NWID_HORIZONTAL_LTR), - NWidget(NWID_SPACER), SetMinimalSize(3, 0), + NWidget(NWID_SPACER), SetMinimalSize(8, 0), NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_NW), SetMinimalSize(66, 50), SetDataTip(0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION), EndContainer(), @@ -1768,7 +1790,7 @@ NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_SW), SetMinimalSize(66, 50), SetDataTip(0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION), EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), + NWidget(NWID_SPACER), SetMinimalSize(4, 0), NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_NE), SetMinimalSize(66, 50), SetDataTip(0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION), EndContainer(), @@ -1776,16 +1798,16 @@ NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_SE), SetMinimalSize(66, 50), SetDataTip(0x0, STR_BUILD_DEPOT_TRAIN_ORIENTATION), EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(3, 0), + NWidget(NWID_SPACER), SetMinimalSize(8, 0), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 3), EndContainer(), }; static const WindowDesc _build_depot_desc( - WDP_AUTO, WDP_AUTO, 140, 122, 140, 122, + WDP_AUTO, WDP_AUTO, 152, 122, 152, 122, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _build_depot_widgets, _nested_build_depot_widgets, lengthof(_nested_build_depot_widgets) ); @@ -1798,6 +1820,7 @@ enum BuildRailWaypointWidgets { BRWW_CLOSEBOX = 0, BRWW_CAPTION, + BRWW_SHADEBOX, BRWW_BACKGROUND, BRWW_WAYPOINT_1, BRWW_WAYPOINT_2, @@ -1825,6 +1848,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + for (i = 0; i < this->hscroll.cap; i++) { if (this->hscroll.pos + i < this->hscroll.count) { const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, this->hscroll.pos + i); @@ -1868,7 +1894,8 @@ /** Widget definition for the build NewGRF rail waypoint window */ static const Widget _build_waypoint_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BRWW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 343, 0, 13, STR_WAYPOINT, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRWW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 331, 0, 13, STR_WAYPOINT, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRWW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 332, 343, 0, 13, 0x0, STR_SHADE_BUTTON}, // BRWW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 343, 14, 91, 0x0, STR_NULL}, // BRWW_BACKGROUND { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 3, 68, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP}, // BRWW_WAYPOINT_1 @@ -1885,6 +1912,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BRWW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BRWW_CAPTION), SetDataTip(STR_WAYPOINT, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BRWW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRWW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 3), @@ -1903,7 +1931,7 @@ static const WindowDesc _build_waypoint_desc( WDP_AUTO, WDP_AUTO, 344, 92, 344, 92, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _build_waypoint_widgets, _nested_build_waypoint_widgets, lengthof(_nested_build_waypoint_widgets) ); Index: src/group_gui.cpp =================================================================== --- src/group_gui.cpp (revision 16883) +++ src/group_gui.cpp (working copy) @@ -29,6 +29,7 @@ enum GroupListWidgets { GRP_WIDGET_CLOSEBOX = 0, GRP_WIDGET_CAPTION, + GRP_WIDGET_SHADEBOX, GRP_WIDGET_STICKY, GRP_WIDGET_SORT_BY_ORDER, GRP_WIDGET_SORT_BY_DROPDOWN, @@ -87,7 +88,8 @@ static const Widget _group_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // GRP_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 447, 0, 13, 0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},// GRP_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 435, 0, 13, 0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},// GRP_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 436, 447, 0, 13, 0x0, STR_SHADE_BUTTON}, // GRP_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 448, 459, 0, 13, 0x0, STR_STICKY_BUTTON}, // GRP_WIDGET_STICKY { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 200, 280, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP}, // GRP_WIDGET_SORT_BY_ORDER { WWT_DROPDOWN, RESIZE_NONE, COLOUR_GREY, 281, 447, 14, 25, 0x0, STR_SORT_CRITERIA_TIP}, // GRP_WIDGET_SORT_BY_DROPDOWN @@ -118,7 +120,8 @@ static const NWidgetPart _nested_group_widgets[] = { NWidget(NWID_HORIZONTAL), // Window header NWidget(WWT_CLOSEBOX, COLOUR_GREY, GRP_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, GRP_WIDGET_CAPTION), SetMinimalSize(437, 14), + NWidget(WWT_CAPTION, COLOUR_GREY, GRP_WIDGET_CAPTION), SetMinimalSize(425, 14), + NWidget(WWT_SHADEBOX, COLOUR_GREY, GRP_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, GRP_WIDGET_STICKY), EndContainer(), @@ -436,6 +439,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Draw Matrix Group * The selected group is drawn in white */ StringID str_all_veh, str_no_group_veh; @@ -748,7 +754,7 @@ static WindowDesc _group_desc( WDP_AUTO, WDP_AUTO, 460, 194, 460, 246, WC_INVALID, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _group_widgets, _nested_group_widgets, lengthof(_nested_group_widgets) ); Index: src/ai/ai_gui.cpp =================================================================== --- src/ai/ai_gui.cpp (revision 16883) +++ src/ai/ai_gui.cpp (working copy) @@ -30,6 +30,7 @@ enum AIListWindowWidgets { AIL_WIDGET_CLOSEBOX = 0, ///< Close window button AIL_WIDGET_CAPTION, ///< Window caption + AIL_WIDGET_SHADEBOX, ///< Shade window button AIL_WIDGET_LIST, ///< The matrix with all available AIs AIL_WIDGET_SCROLLBAR, ///< Scrollbar next to the AI list AIL_WIDGET_INFO_BG, ///< Panel to draw some AI information on @@ -76,6 +77,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Draw a list of all available AIs. */ int y = this->widget[AIL_WIDGET_LIST].top; /* First AI in the list is hardcoded to random */ @@ -188,7 +192,8 @@ /* Widget definition for the ai list window. */ static const Widget _ai_list_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // AIL_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 199, 0, 13, STR_AI_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},// AIL_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 187, 0, 13, STR_AI_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},// AIL_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_MAUVE, 188, 199, 0, 13, 0x0, STR_SHADE_BUTTON}, // AIL_WIDGET_SHADEBOX { WWT_MATRIX, RESIZE_RB, COLOUR_MAUVE, 0, 187, 14, 125, 0x501, STR_AI_AILIST_TIP}, // AIL_WIDGET_LIST { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_MAUVE, 188, 199, 14, 125, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST }, // AIL_WIDGET_SCROLLBAR { WWT_PANEL, RESIZE_RTB, COLOUR_MAUVE, 0, 199, 126, 209, 0x0, STR_NULL}, // AIL_WIDGET_INFO_BG @@ -202,7 +207,8 @@ static const NWidgetPart _nested_ai_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE, AIL_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_MAUVE, AIL_WIDGET_CAPTION), SetMinimalSize(189, 14), SetDataTip(STR_AI_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_MAUVE, AIL_WIDGET_CAPTION), SetMinimalSize(177, 14), SetDataTip(STR_AI_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_MAUVE, AIL_WIDGET_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_MAUVE, AIL_WIDGET_LIST), SetMinimalSize(188, 112), SetResize(1, 1), SetDataTip(0x501, STR_AI_AILIST_TIP), @@ -224,7 +230,7 @@ static const WindowDesc _ai_list_desc( WDP_CENTER, WDP_CENTER, 200, 234, 200, 234, WC_AI_LIST, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_RESIZABLE, _ai_list_widgets, _nested_ai_list_widgets, lengthof(_nested_ai_list_widgets) ); @@ -238,6 +244,7 @@ enum AISettingsWindowWidgest { AIS_WIDGET_CLOSEBOX = 0, ///< Close window button AIS_WIDGET_CAPTION, ///< Window caption + AIS_WIDGET_SHADEBOX, ///< Shade window button AIS_WIDGET_BACKGROUND, ///< Panel to draw the settings on AIS_WIDGET_SCROLLBAR, ///< Scrollbar to scroll through all settings AIS_WIDGET_ACCEPT, ///< Accept button @@ -274,6 +281,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + AIConfig *config = this->ai_config; AIConfigItemList::const_iterator it = config->GetConfigList()->begin(); int i = 0; @@ -393,7 +403,8 @@ /* Widget definition for the AI settings window. */ static const Widget _ai_settings_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // AIS_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 199, 0, 13, STR_AI_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},// AIS_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 187, 0, 13, STR_AI_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},// AIS_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_MAUVE, 188, 199, 0, 13, 0x0, STR_SHADE_BUTTON}, // AIS_WIDGET_SHADEBOX { WWT_MATRIX, RESIZE_RB, COLOUR_MAUVE, 0, 187, 14, 195, 0x501, STR_NULL}, // AIS_WIDGET_BACKGROUND { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_MAUVE, 188, 199, 14, 195, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST }, // AIS_WIDGET_SCROLLBAR { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_MAUVE, 0, 93, 196, 207, STR_AI_CLOSE, STR_NULL}, // AIS_WIDGET_ACCEPT @@ -405,7 +416,8 @@ static const NWidgetPart _nested_ai_settings_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE, AIS_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_MAUVE, AIS_WIDGET_CAPTION), SetMinimalSize(189, 14), SetDataTip(STR_AI_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_MAUVE, AIS_WIDGET_CAPTION), SetMinimalSize(177, 14), SetDataTip(STR_AI_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_MAUVE, AIS_WIDGET_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_MATRIX, COLOUR_MAUVE, AIS_WIDGET_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetDataTip(0x501, STR_NULL), @@ -422,7 +434,7 @@ static const WindowDesc _ai_settings_desc( WDP_CENTER, WDP_CENTER, 200, 208, 500, 208, WC_AI_SETTINGS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_RESIZABLE, _ai_settings_widgets, _nested_ai_settings_widgets, lengthof(_nested_ai_settings_widgets) ); @@ -437,6 +449,7 @@ enum AIConfigWindowWidgets { AIC_WIDGET_CLOSEBOX = 0, ///< Close window button AIC_WIDGET_CAPTION, ///< Window caption + AIC_WIDGET_SHADEBOX, ///< Shade window button AIC_WIDGET_BACKGROUND, ///< Window background AIC_WIDGET_LIST, ///< List with currently selected AIs AIC_WIDGET_SCROLLBAR, ///< Scrollbar to scroll through the selected AIs @@ -449,7 +462,8 @@ /* Widget definition for the configure AI window. */ static const Widget _ai_config_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // AIC_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_MAUVE, 11, 299, 0, 13, STR_AI_CONFIG_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},// AIC_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_MAUVE, 11, 287, 0, 13, STR_AI_CONFIG_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS},// AIC_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_MAUVE, 288, 299, 0, 13, 0x0, STR_SHADE_BUTTON}, // AIC_WIDGET_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_MAUVE, 0, 299, 14, 171, 0x0, STR_NULL}, // AIC_WIDGET_BACKGROUND { WWT_MATRIX, RESIZE_NONE, COLOUR_MAUVE, 0, 287, 30, 141, 0x501, STR_AI_LIST_TIP}, // AIC_WIDGET_LIST { WWT_SCROLLBAR, RESIZE_NONE, COLOUR_MAUVE, 288, 299, 30, 141, STR_NULL, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, // AIC_WIDGET_SCROLLBAR @@ -462,7 +476,8 @@ static const NWidgetPart _nested_ai_config_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_MAUVE, AIC_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_MAUVE, AIC_WIDGET_CAPTION), SetMinimalSize(289, 14), SetDataTip(STR_AI_CONFIG_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_MAUVE, AIC_WIDGET_CAPTION), SetMinimalSize(277, 14), SetDataTip(STR_AI_CONFIG_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_MAUVE, AIC_WIDGET_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE, AIC_WIDGET_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 16), @@ -484,7 +499,7 @@ static const WindowDesc _ai_config_desc( WDP_CENTER, WDP_CENTER, 300, 172, 300, 172, WC_GAME_OPTIONS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _ai_config_widgets, _nested_ai_config_widgets, lengthof(_nested_ai_config_widgets) ); @@ -522,6 +537,9 @@ this->SetWidgetDisabledState(AIC_WIDGET_CONFIGURE, selected_slot == INVALID_COMPANY); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + byte max_competitors = _settings_newgame.difficulty.max_no_competitors; DrawArrowButtons(10, 18, COLOUR_YELLOW, this->clicked_button ? 1 + !!this->clicked_increase : 0, max_competitors > 0, max_competitors < MAX_COMPANIES - 1); SetDParam(0, _settings_newgame.difficulty.max_no_competitors); @@ -620,6 +638,7 @@ enum AIDebugWindowWidgets { AID_WIDGET_CLOSEBOX = 0, AID_WIDGET_CAPTION, + AID_WIDGET_SHADEBOX, AID_WIDGET_STICKY, AID_WIDGET_VIEW, AID_WIDGET_NAME_TEXT, @@ -689,6 +708,9 @@ /* Draw standard stuff */ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* If there are no active companies, don't display anything else. */ if (ai_debug_company == INVALID_COMPANY) return; @@ -834,7 +856,8 @@ static const Widget _ai_debug_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // AID_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 286, 0, 13, STR_AI_DEBUG, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // AID_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 274, 0, 13, STR_AI_DEBUG, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // AID_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_GREY, 275, 286, 0, 13, 0x0, STR_SHADE_BUTTON}, // AID_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 287, 298, 0, 13, 0x0, STR_STICKY_BUTTON }, // AID_WIDGET_STICKY { WWT_PANEL, RESIZE_RIGHT, COLOUR_GREY, 0, 298, 14, 40, 0x0, STR_NULL}, // AID_WIDGET_VIEW @@ -866,6 +889,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, AID_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, AID_WIDGET_CAPTION), SetResize(1, 0), SetDataTip(STR_AI_DEBUG, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, AID_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, AID_WIDGET_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_VIEW), @@ -927,7 +951,7 @@ static const WindowDesc _ai_debug_desc( WDP_AUTO, WDP_AUTO, 299, 241, 299, 241, WC_AI_DEBUG, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _ai_debug_widgets, _nested_ai_debug_widgets, lengthof(_nested_ai_debug_widgets) ); Index: src/timetable_gui.cpp =================================================================== --- src/timetable_gui.cpp (revision 16883) +++ src/timetable_gui.cpp (working copy) @@ -21,6 +21,7 @@ TTV_WIDGET_CLOSEBOX = 0, TTV_CAPTION, TTV_ORDER_VIEW, + TTV_SHADEBOX, TTV_STICKY, TTV_TIMETABLE_PANEL, TTV_SCROLLBAR, @@ -171,6 +172,9 @@ SetDParam(0, v->index); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + int y = 15; int i = this->vscroll.pos; VehicleOrderID order_id = (i + 1) / 2; @@ -335,7 +339,8 @@ static const Widget _timetable_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // TTV_WIDGET_CLOSEBOX { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 326, 0, 13, STR_TIMETABLE_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // TTV_CAPTION - { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 327, 387, 0, 13, STR_ORDER_VIEW, STR_ORDER_VIEW_TOOLTIP}, // TTV_ORDER_VIEW + { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 327, 375, 0, 13, STR_ORDER_VIEW, STR_ORDER_VIEW_TOOLTIP}, // TTV_ORDER_VIEW + { WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_GREY, 376, 387, 0, 13, 0x0, STR_SHADE_BUTTON}, // TTV_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 388, 399, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // TTV_STICKY { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 387, 14, 95, STR_NULL, STR_TIMETABLE_TOOLTIP}, // TTV_TIMETABLE_PANEL @@ -359,6 +364,7 @@ NWidget(WWT_CLOSEBOX, COLOUR_GREY, TTV_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, TTV_CAPTION), SetDataTip(STR_TIMETABLE_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, TTV_ORDER_VIEW), SetMinimalSize(61, 14), SetDataTip( STR_ORDER_VIEW, STR_ORDER_VIEW_TOOLTIP), + NWidget(WWT_SHADEBOX, COLOUR_GREY, TTV_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, TTV_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -379,7 +385,7 @@ static const WindowDesc _timetable_desc( WDP_AUTO, WDP_AUTO, 400, 130, 400, 130, WC_VEHICLE_TIMETABLE, WC_VEHICLE_VIEW, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, _timetable_widgets, _nested_timetable_widgets, lengthof(_nested_timetable_widgets) ); Index: src/depot_gui.cpp =================================================================== --- src/depot_gui.cpp (revision 16883) +++ src/depot_gui.cpp (working copy) @@ -36,6 +36,7 @@ enum DepotWindowWidgets { DEPOT_WIDGET_CLOSEBOX = 0, DEPOT_WIDGET_CAPTION, + DEPOT_WIDGET_SHADE, DEPOT_WIDGET_STICKY, DEPOT_WIDGET_SELL, DEPOT_WIDGET_SELL_CHAIN, @@ -71,7 +72,8 @@ */ static const Widget _depot_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // DEPOT_WIDGET_CLOSEBOX - { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 23, 0, 13, 0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // DEPOT_WIDGET_CAPTION + { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 11, 0, 13, 0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // DEPOT_WIDGET_CAPTION + { WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 12, 23, 0, 13, 0x0, STR_SHADE_BUTTON}, // DEPOT_WIDGET_SHADE { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 24, 35, 0, 13, 0x0, STR_STICKY_BUTTON}, // DEPOT_WIDGET_STICKY /* Widgets are set up run-time */ @@ -90,7 +92,7 @@ { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 0, 15, 26, 0x0, STR_NULL}, // DEPOT_WIDGET_BUILD { WWT_TEXTBTN, RESIZE_TB, COLOUR_GREY, 0, 0, 15, 26, 0x0, STR_NULL}, // DEPOT_WIDGET_CLONE { WWT_PUSHTXTBTN, RESIZE_RTB, COLOUR_GREY, 0, -12, 15, 26, STR_BUTTON_LOCATION, STR_NULL}, // DEPOT_WIDGET_LOCATION - { WWT_PUSHTXTBTN, RESIZE_LRTB, COLOUR_GREY, -11, 0, 15, 26, 0x0, STR_NULL}, // DEPOT_WIDGET_VEHICLE_LIST + { WWT_PUSHTXTBTN, RESIZE_LRTB, COLOUR_GREY, -13, 0, 15, 26, 0x0, STR_NULL}, // DEPOT_WIDGET_VEHICLE_LIST { WWT_PUSHIMGBTN, RESIZE_LRTB, COLOUR_GREY, 1, 11, 15, 26, SPR_FLAG_VEH_STOPPED,STR_NULL}, // DEPOT_WIDGET_STOP_ALL { WWT_PUSHIMGBTN, RESIZE_LRTB, COLOUR_GREY, 12, 23, 15, 26, SPR_FLAG_VEH_RUNNING,STR_NULL}, // DEPOT_WIDGET_START_ALL { WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_GREY, 24, 35, 15, 26, 0x0, STR_RESIZE_BUTTON}, // DEPOT_WIDGET_RESIZE @@ -101,28 +103,28 @@ static const WindowDesc _train_depot_desc( WDP_AUTO, WDP_AUTO, 36, 27, 362, 123, WC_VEHICLE_DEPOT, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _depot_widgets ); static const WindowDesc _road_depot_desc( WDP_AUTO, WDP_AUTO, 36, 27, 316, 97, WC_VEHICLE_DEPOT, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _depot_widgets ); static const WindowDesc _ship_depot_desc( WDP_AUTO, WDP_AUTO, 36, 27, 306, 99, WC_VEHICLE_DEPOT, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _depot_widgets ); static const WindowDesc _aircraft_depot_desc( WDP_AUTO, WDP_AUTO, 36, 27, 332, 99, WC_VEHICLE_DEPOT, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _depot_widgets ); @@ -264,6 +266,8 @@ { bool free_wagon = false; int sprite_y = y + this->resize.step_height - GetVehicleListHeight(v->type); + /* Don't draw the rest of the window if window is shaded */ + if (w->flags4 & WF_SHADE) return; switch (v->type) { case VEH_TRAIN: { Index: src/station_gui.cpp =================================================================== --- src/station_gui.cpp (revision 16883) +++ src/station_gui.cpp (working copy) @@ -83,6 +83,7 @@ enum StationListWidgets { SLW_CLOSEBOX = 0, ///< Close window button SLW_CAPTION, ///< Window caption + SLW_SHADEBOX, ///< Shade window button SLW_STICKY, ///< Sticky button SLW_LIST, ///< The main panel, list of stations SLW_SCROLLBAR, ///< Scrollbar next to the main panel @@ -335,6 +336,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* draw arrow pointing up/down for ascending/descending sorting */ this->DrawSortButtonState(SLW_SORTBY, this->stations.IsDescSortOrder() ? SBS_DOWN : SBS_UP); @@ -602,7 +606,8 @@ static const Widget _company_stations_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SLW_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 345, 0, 13, STR_STATION_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SLW_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 333, 0, 13, STR_STATION_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SLW_CAPTION +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 334, 345, 0, 13, 0x0, STR_SHADE_BUTTON}, // SLW_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 346, 357, 0, 13, 0x0, STR_STICKY_BUTTON}, // SLW_STICKY { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 345, 37, 161, 0x0, STR_STATION_LIST_TOOLTIP}, // SLW_LIST { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 346, 357, 37, 149, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, // SLW_SCROLLBAR @@ -630,6 +635,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, SLW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, SLW_CAPTION), SetDataTip(STR_STATION_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, SLW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, SLW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -661,7 +667,7 @@ static const WindowDesc _company_stations_desc( WDP_AUTO, WDP_AUTO, 358, 162, 358, 162, WC_STATION_LIST, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _company_stations_widgets, _nested_company_stations_widgets, lengthof(_nested_company_stations_widgets) ); @@ -679,7 +685,8 @@ static const Widget _station_view_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SVW_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 236, 0, 13, STR_STATION_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 224, 0, 13, STR_STATION_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 225, 236, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 237, 248, 0, 13, 0x0, STR_STICKY_BUTTON}, { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 236, 14, 65, 0x0, STR_NULL}, // SVW_WAITING { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 237, 248, 14, 65, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, @@ -699,6 +706,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, SVW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, SVW_CAPTION), SetDataTip(STR_STATION_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, SVW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, SVW_STICKYBOX), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -857,6 +865,9 @@ SetDParam(1, st->facilities); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + int x = 2; ///< coordinates used for printing waiting/accepted/rating of cargo int y = 15; int pos = this->vscroll.pos; ///< = this->vscroll.pos @@ -1053,7 +1064,7 @@ static const WindowDesc _station_view_desc( WDP_AUTO, WDP_AUTO, 249, 110, 249, 110, WC_STATION_VIEW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _station_view_widgets, _nested_station_view_widgets, lengthof(_nested_station_view_widgets) ); @@ -1176,6 +1187,7 @@ enum JoinStationWidgets { JSW_WIDGET_CLOSEBOX = 0, JSW_WIDGET_CAPTION, + JSW_WIDGET_SHADEBOX, JSW_PANEL, JSW_SCROLLBAR, JSW_RESIZEBOX, @@ -1183,7 +1195,8 @@ static const Widget _select_station_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_DARK_GREEN, 11, 199, 0, 13, STR_SELECT_STATION_TO_JOIN, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_DARK_GREEN, 11, 187, 0, 13, STR_SELECT_STATION_TO_JOIN, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_DARK_GREEN, 188, 199, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_RB, COLOUR_DARK_GREEN, 0, 187, 14, 79, 0x0, STR_NULL}, { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_DARK_GREEN, 188, 199, 14, 67, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, { WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_DARK_GREEN, 188, 199, 68, 79, 0x0, STR_RESIZE_BUTTON}, @@ -1194,6 +1207,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, JSW_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, JSW_WIDGET_CAPTION), SetDataTip(STR_SELECT_STATION_TO_JOIN, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, JSW_WIDGET_SHADEBOX), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, JSW_PANEL), SetMinimalSize(188, 66), SetResize(1, 10), EndContainer(), @@ -1231,6 +1245,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + uint y = 17; if (this->vscroll.pos == 0) { DrawString(3, this->widget[JSW_PANEL].right - 2, y, STR_CREATE_SPLITTED_STATION); @@ -1292,7 +1309,7 @@ static const WindowDesc _select_station_desc( WDP_AUTO, WDP_AUTO, 200, 80, 200, 180, WC_SELECT_STATION, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _select_station_widgets, _nested_select_station_widgets, lengthof(_nested_select_station_widgets) ); Index: src/town_gui.cpp =================================================================== --- src/town_gui.cpp (revision 16883) +++ src/town_gui.cpp (working copy) @@ -36,6 +36,7 @@ enum TownAuthorityWidgets { TWA_CLOSEBOX, TWA_CAPTION, + TWA_SHADEBOX, TWA_RATING_INFO, TWA_COMMAND_LIST, TWA_SCROLLBAR, @@ -45,7 +46,8 @@ static const Widget _town_authority_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_BROWN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // TWA_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_BROWN, 11, 316, 0, 13, STR_LOCAL_AUTHORITY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // TWA_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_BROWN, 11, 304, 0, 13, STR_LOCAL_AUTHORITY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // TWA_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_BROWN, 305, 316, 0, 13, 0x0, STR_SHADE_BUTTON}, // TWA_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_BROWN, 0, 316, 14, 105, 0x0, STR_NULL}, // TWA_RATING_INFO { WWT_PANEL, RESIZE_NONE, COLOUR_BROWN, 0, 304, 106, 157, 0x0, STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP}, // TWA_COMMAND_LIST { WWT_SCROLLBAR, RESIZE_NONE, COLOUR_BROWN, 305, 316, 106, 157, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, // TWA_SCROLLBAR @@ -58,6 +60,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN, TWA_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_BROWN, TWA_CAPTION), SetDataTip(STR_LOCAL_AUTHORITY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_BROWN, TWA_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, TWA_RATING_INFO), SetMinimalSize(317, 92), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -122,6 +125,9 @@ SetDParam(0, this->window_number); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + int y = this->widget[TWA_RATING_INFO].top + 1; DrawString(this->widget[TWA_RATING_INFO].left + 2, this->widget[TWA_RATING_INFO].right - 2, y, STR_LOCAL_AUTHORITY_COMPANY_RATINGS); @@ -223,7 +229,7 @@ static const WindowDesc _town_authority_desc( WDP_AUTO, WDP_AUTO, 317, 222, 317, 222, WC_TOWN_AUTHORITY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _town_authority_widgets, _nested_town_authority_widgets, lengthof(_nested_town_authority_widgets) ); @@ -236,6 +242,7 @@ enum TownViewWidgets { TVW_CLOSEBOX, TVW_CAPTION, + TVW_SHADEBOX, TVW_STICKY, TVW_VIEWPORTPANEL, TVW_VIEWPORTINSET, @@ -273,11 +280,12 @@ this->HideWidget(TVW_EXPAND); this->widget[TVW_SHOWAUTHORITY].right = this->widget[TVW_EXPAND].right; /* Resize caption bar */ - this->widget[TVW_CAPTION].right = this->widget[TVW_STICKY].left -1; + this->widget[TVW_CAPTION].right = this->widget[TVW_SHADEBOX].left -1; /* Hide the delete button, and move the rename button from top on scenario to bottom in game. */ this->HideWidget(TVW_DELETE); this->widget[TVW_CHANGENAME].top = this->widget[TVW_EXPAND].top; this->widget[TVW_CHANGENAME].bottom = this->widget[TVW_EXPAND].bottom; + this->widget[TVW_CHANGENAME].left = this->widget[TVW_EXPAND].right + 1; this->widget[TVW_CHANGENAME].right = this->widget[TVW_STICKY].right; } else { /* Hide the authority button, and put the expand button over it. */ @@ -298,6 +306,9 @@ SetDParam(0, this->town->index); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + uint y = 107; SetDParam(0, this->town->population); @@ -445,6 +456,7 @@ static const Widget _town_view_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_BROWN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // TVW_CLOSEBOX { WWT_CAPTION, RESIZE_NONE, COLOUR_BROWN, 11, 171, 0, 13, STR_TOWN_VIEW_TOWN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // TVW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_BROWN, 236, 247, 0, 13, 0x0, STR_SHADE_BUTTON}, // TVW_SHADEBOX { WWT_STICKYBOX, RESIZE_NONE, COLOUR_BROWN, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, // TVW_STICKY { WWT_PANEL, RESIZE_NONE, COLOUR_BROWN, 0, 259, 14, 105, 0x0, STR_NULL}, // TVW_VIEWPORTPANEL { WWT_INSET, RESIZE_NONE, COLOUR_BROWN, 2, 257, 16, 103, 0x0, STR_NULL}, // TVW_VIEWPORTINSET @@ -462,6 +474,7 @@ NWidget(WWT_CLOSEBOX, COLOUR_BROWN, TVW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_BROWN, TVW_CAPTION), SetDataTip(STR_TOWN_VIEW_TOWN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, TVW_CHANGENAME), SetMinimalSize(76, 14), SetDataTip(STR_QUERY_RENAME, STR_TOWN_VIEW_RENAME_TOOLTIP), + NWidget(WWT_SHADEBOX, COLOUR_BROWN, TVW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_BROWN, TVW_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, TVW_VIEWPORTPANEL), @@ -479,7 +492,7 @@ static const WindowDesc _town_view_desc( WDP_AUTO, WDP_AUTO, 260, TownViewWindow::TVW_HEIGHT_NORMAL, 260, TownViewWindow::TVW_HEIGHT_NORMAL, WC_TOWN_VIEW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON, _town_view_widgets, _nested_town_view_widgets, lengthof(_nested_town_view_widgets) ); @@ -492,6 +505,7 @@ enum TownDirectoryWidgets { TDW_CLOSEBOX, TDW_CAPTION, + TDW_SHADEBOX, TDW_STICKYBOX, TDW_SORTNAME, TDW_SORTPOPULATION, @@ -505,6 +519,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN, TDW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_BROWN, TDW_CAPTION), SetDataTip(STR_TOWN_DIRECTORY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_BROWN, TDW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_BROWN, TDW_STICKYBOX), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -760,7 +775,7 @@ static const WindowDesc _town_directory_desc( WDP_AUTO, WDP_AUTO, 208, 202, 208, 202, WC_TOWN_DIRECTORY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, NULL, _nested_town_directory_widgets, lengthof(_nested_town_directory_widgets) ); @@ -782,6 +797,7 @@ enum TownScenarioEditorWidgets { TSEW_CLOSEBOX, TSEW_CAPTION, + TSEW_SHADEBOX, TSEW_STICKYBOX, TSEW_BACKGROUND, TSEW_NEWTOWN, @@ -805,6 +821,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, TSEW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, TSEW_CAPTION), SetDataTip(STR_FOUND_TOWN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, TSEW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, TSEW_STICKYBOX), EndContainer(), /* Construct new town(s) buttons. */ @@ -987,7 +1004,7 @@ static const WindowDesc _found_town_desc( WDP_AUTO, WDP_AUTO, 160, 162, 160, 162, WC_FOUND_TOWN, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, NULL, _nested_found_town_widgets, lengthof(_nested_found_town_widgets) ); Index: src/order_gui.cpp =================================================================== --- src/order_gui.cpp (revision 16883) +++ src/order_gui.cpp (working copy) @@ -34,6 +34,7 @@ ORDER_WIDGET_CLOSEBOX = 0, ORDER_WIDGET_CAPTION, ORDER_WIDGET_TIMETABLE_VIEW, + ORDER_WIDGET_SHADEBOX, ORDER_WIDGET_STICKY, ORDER_WIDGET_ORDER_LIST, ORDER_WIDGET_SCROLLBAR, @@ -834,6 +835,9 @@ SetDParam(0, this->vehicle->index); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + int y = 15; int i = this->vscroll.pos; @@ -1245,7 +1249,8 @@ static const Widget _orders_train_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 371, 0, 13, STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION - { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 311, 371, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW + { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 311, 359, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW + { WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 360, 371, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // ORDER_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 372, 383, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // ORDER_WIDGET_STICKY { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 371, 14, 75, 0x0, STR_ORDERS_LIST_TOOLTIP}, // ORDER_WIDGET_ORDER_LIST @@ -1286,6 +1291,7 @@ EndContainer(), NWidget(WWT_CAPTION, COLOUR_GREY, ORDER_WIDGET_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), + NWidget(WWT_SHADEBOX, COLOUR_GREY, ORDER_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, ORDER_WIDGET_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1371,7 +1377,7 @@ static const WindowDesc _orders_train_desc( WDP_AUTO, WDP_AUTO, 384, 100, 384, 100, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _orders_train_widgets, _nested_orders_train_widgets, lengthof(_nested_orders_train_widgets) ); @@ -1381,7 +1387,8 @@ static const Widget _orders_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 371, 0, 13, STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION - { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 311, 371, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW + { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 311, 359, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW + { WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 360, 371, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // ORDER_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 372, 383, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // ORDER_WIDGET_STICKY { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 371, 14, 75, 0x0, STR_ORDERS_LIST_TOOLTIP}, // ORDER_WIDGET_ORDER_LIST @@ -1423,6 +1430,7 @@ EndContainer(), NWidget(WWT_CAPTION, COLOUR_GREY, ORDER_WIDGET_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), + NWidget(WWT_SHADEBOX, COLOUR_GREY, ORDER_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, ORDER_WIDGET_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1511,7 +1519,7 @@ static const WindowDesc _orders_desc( WDP_AUTO, WDP_AUTO, 384, 100, 384, 100, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _orders_widgets, _nested_orders_widgets, lengthof(_nested_orders_widgets) ); @@ -1521,7 +1529,8 @@ static const Widget _other_orders_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 371, 0, 13, STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION - { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 311, 371, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW + { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 311, 359, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW + { WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 360, 371, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // ORDER_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 372, 383, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // ORDER_WIDGET_STICKY { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 371, 14, 85, 0x0, STR_ORDERS_LIST_TOOLTIP}, // ORDER_WIDGET_ORDER_LIST @@ -1566,6 +1575,7 @@ EndContainer(), NWidget(WWT_CAPTION, COLOUR_GREY, ORDER_WIDGET_CAPTION), SetDataTip(STR_ORDERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), + NWidget(WWT_SHADEBOX, COLOUR_GREY, ORDER_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, ORDER_WIDGET_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1610,7 +1620,7 @@ static const WindowDesc _other_orders_desc( WDP_AUTO, WDP_AUTO, 384, 86, 384, 86, WC_VEHICLE_ORDERS, WC_VEHICLE_VIEW, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, _other_orders_widgets, _nested_other_orders_widgets, lengthof(_nested_other_orders_widgets) ); Index: src/vehicle_gui.h =================================================================== --- src/vehicle_gui.h (revision 16883) +++ src/vehicle_gui.h (working copy) @@ -19,6 +19,7 @@ enum VehicleViewWindowWidgets { VVW_WIDGET_CLOSEBOX = 0, VVW_WIDGET_CAPTION, + VVW_WIDGET_SHADEBOX, VVW_WIDGET_STICKY, VVW_WIDGET_PANEL, VVW_WIDGET_VIEWPORT, Index: src/company_gui.cpp =================================================================== --- src/company_gui.cpp (revision 16883) +++ src/company_gui.cpp (working copy) @@ -95,6 +95,7 @@ CFW_CLOSEBOX = 0, ///< Close the window CFW_CAPTION, ///< Caption of the window CFW_TOGGLE_SIZE, ///< Toggle windows size + CFW_SHADE, ///< Shade button CFW_STICKY, ///< Sticky button CFW_EXPS_PANEL, ///< Panel for expenses CFW_EXPS_CATEGORY, ///< Column for expenses category strings @@ -218,8 +219,9 @@ static const NWidgetPart _nested_company_finances_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, CFW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, CFW_CAPTION), SetMinimalSize(369, 14), SetDataTip(STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, CFW_CAPTION), SetMinimalSize(357, 14), SetDataTip(STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_IMGBTN, COLOUR_GREY, CFW_TOGGLE_SIZE), SetMinimalSize(14, 14), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_TOGGLE_LARGE_SMALL_WINDOW), + NWidget(WWT_SHADEBOX, COLOUR_GREY, CFW_SHADE), NWidget(WWT_STICKYBOX, COLOUR_GREY, CFW_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, CFW_EXPS_PANEL), @@ -251,8 +253,9 @@ static const Widget _company_finances_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // CFW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 380, 0, 13, STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // CFW_CAPTION -{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 381, 394, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_TOGGLE_LARGE_SMALL_WINDOW}, // CFW_TOGGLE_SIZE +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 368, 0, 13, STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // CFW_CAPTION +{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 369, 382, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_TOGGLE_LARGE_SMALL_WINDOW}, // CFW_TOGGLE_SIZE +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 383, 394, 0, 13, 0x0, STR_SHADE_BUTTON}, // CFW_SHADEBOX { WWT_STICKYBOX, RESIZE_NONE, COLOUR_GREY, 395, 406, 0, 13, 0x0, STR_STICKY_BUTTON}, // CFW_STICKY { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 406, 14, 14, 0x0, STR_NULL}, // CFW_EXPS_PANEL { WWT_EMPTY, RESIZE_NONE, COLOUR_GREY, 0, 122, 14, 14, 0x0, STR_NULL}, // CFW_EXPS_CATEGORY @@ -271,8 +274,9 @@ static const NWidgetPart _nested_company_finances_small_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, CFW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, CFW_CAPTION), SetMinimalSize(243, 14), SetDataTip(STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, CFW_CAPTION), SetMinimalSize(231, 14), SetDataTip(STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_IMGBTN, COLOUR_GREY, CFW_TOGGLE_SIZE), SetMinimalSize(14, 14), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_TOGGLE_LARGE_SMALL_WINDOW), + NWidget(WWT_SHADEBOX, COLOUR_GREY, CFW_SHADE), NWidget(WWT_STICKYBOX, COLOUR_GREY, CFW_STICKY), EndContainer(), NWidget(WWT_EMPTY, COLOUR_GREY, CFW_EXPS_PANEL), @@ -296,8 +300,9 @@ static const Widget _company_finances_small_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // CFW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 253, 0, 13, STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // CFW_CAPTION -{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 254, 267, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_TOGGLE_LARGE_SMALL_WINDOW}, // CFW_TOGGLE_SIZE +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 241, 0, 13, STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // CFW_CAPTION +{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 242, 255, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_TOGGLE_LARGE_SMALL_WINDOW}, // CFW_TOGGLE_SIZE +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 256, 267, 0, 13, 0x0, STR_SHADE_BUTTON}, // CFW_SHADE { WWT_STICKYBOX, RESIZE_NONE, COLOUR_GREY, 268, 279, 0, 13, 0x0, STR_STICKY_BUTTON}, // CFW_STICKY { WWT_EMPTY, RESIZE_NONE, COLOUR_GREY, 0, 0, 0, 0, 0x0, STR_NULL}, // CFW_EXPS_PANEL { WWT_EMPTY, RESIZE_NONE, COLOUR_GREY, 0, 0, 0, 0, 0x0, STR_NULL}, // CFW_EXPS_CATEGORY @@ -358,7 +363,11 @@ if (this->height != new_height) { /* Make window dirty before and after resizing */ this->SetDirty(); - this->height = new_height; + if (this->flags4 & WF_SHADE) { + this->height_shade = new_height; + } else { + this->height = new_height; + } this->SetDirty(); this->SetWidgetHiddenState(CFW_INCREASE_LOAN, company != _local_company); @@ -376,6 +385,9 @@ SetDParam(2, LOAN_INTERVAL); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawCompanyEconomyStats(c, this->small, this->widget); } @@ -409,14 +421,14 @@ static const WindowDesc _company_finances_desc( WDP_AUTO, WDP_AUTO, 407, 60, 407, 60, WC_FINANCES, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON, _company_finances_widgets, _nested_company_finances_widgets, lengthof(_nested_company_finances_widgets) ); static const WindowDesc _company_finances_small_desc( WDP_AUTO, WDP_AUTO, 280, 60, 280, 60, WC_FINANCES, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON, _company_finances_small_widgets, _nested_company_finances_small_widgets, lengthof(_nested_company_finances_small_widgets) ); @@ -506,6 +518,7 @@ enum SelectCompanyLiveryWindowWidgets { SCLW_WIDGET_CLOSE, SCLW_WIDGET_CAPTION, + SCLW_WIDGET_SHADE, SCLW_WIDGET_CLASS_GENERAL, SCLW_WIDGET_CLASS_RAIL, SCLW_WIDGET_CLASS_ROAD, @@ -585,6 +598,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) { if (_livery_class[scheme] == this->livery_class) { bool sel = HasBit(this->sel, scheme) != 0; @@ -704,7 +720,8 @@ static const NWidgetPart _nested_select_company_livery_widgets [] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, SCLW_WIDGET_CLOSE), - NWidget(WWT_CAPTION, COLOUR_GREY, SCLW_WIDGET_CAPTION), SetMinimalSize(389, 14), SetDataTip(STR_LIVERY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, SCLW_WIDGET_CAPTION), SetMinimalSize(377, 14), SetDataTip(STR_LIVERY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, SCLW_WIDGET_SHADE), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_GREY, SCLW_WIDGET_CLASS_GENERAL), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_COMPANY_GENERAL, STR_LIVERY_GENERAL_TIP), @@ -724,7 +741,8 @@ static const Widget _select_company_livery_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW }, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 399, 0, 13, STR_LIVERY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 387, 0, 13, STR_LIVERY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 388, 399, 0, 13, 0x0, STR_SHADE_BUTTON }, { WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 0, 21, 14, 35, SPR_IMG_COMPANY_GENERAL, STR_LIVERY_GENERAL_TIP }, { WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 22, 43, 14, 35, SPR_IMG_TRAINLIST, STR_LIVERY_TRAIN_TIP }, { WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 44, 65, 14, 35, SPR_IMG_TRUCKLIST, STR_LIVERY_ROADVEH_TIP }, @@ -741,7 +759,7 @@ static const WindowDesc _select_company_livery_desc( WDP_AUTO, WDP_AUTO, 400, 49 + 1 * 14, 400, 49 + 1 * 14, WC_COMPANY_COLOUR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _select_company_livery_widgets, _nested_select_company_livery_widgets, lengthof(_nested_select_company_livery_widgets) ); @@ -798,6 +816,7 @@ SCMFW_WIDGET_CLOSEBOX = 0, SCMFW_WIDGET_CAPTION, SCMFW_WIDGET_TOGGLE_LARGE_SMALL, + SCMFW_WIDGET_SHADEBOX, SCMFW_WIDGET_SELECT_FACE, SCMFW_WIDGET_CANCEL, SCMFW_WIDGET_ACCEPT, @@ -850,8 +869,9 @@ static const NWidgetPart _nested_select_company_manager_face_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, SCMFW_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, SCMFW_WIDGET_CAPTION), SetMinimalSize(164, 14), SetDataTip(STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, SCMFW_WIDGET_CAPTION), SetMinimalSize(152, 14), SetDataTip(STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_IMGBTN, COLOUR_GREY, SCMFW_WIDGET_TOGGLE_LARGE_SMALL), SetMinimalSize(15, 14), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TIP), + NWidget(WWT_SHADEBOX, COLOUR_GREY, SCMFW_WIDGET_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, SCMFW_WIDGET_SELECT_FACE), NWidget(NWID_HORIZONTAL), @@ -882,8 +902,9 @@ /** Widget description for the normal/simple company manager face selection dialog */ static const Widget _select_company_manager_face_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SCMFW_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 174, 0, 13, STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SCMFW_WIDGET_CAPTION -{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 175, 189, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TIP}, // SCMFW_WIDGET_TOGGLE_LARGE_SMALL +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 162, 0, 13, STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SCMFW_WIDGET_CAPTION +{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 163, 177, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TIP}, // SCMFW_WIDGET_TOGGLE_LARGE_SMALL +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 178, 189, 0, 13, 0x0, STR_SHADE_BUTTON}, // SCMFW_WIDGET_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 189, 14, 150, 0x0, STR_NULL}, // SCMFW_WIDGET_SELECT_FACE { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 94, 151, 162, STR_QUERY_CANCEL, STR_FACE_CANCEL_TOOLTIP}, // SCMFW_WIDGET_CANCEL { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 95, 189, 151, 162, STR_QUERY_OK, STR_FACE_OK_TOOLTIP}, // SCMFW_WIDGET_ACCEPT @@ -898,8 +919,9 @@ static const NWidgetPart _nested_select_company_manager_face_adv_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, SCMFW_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, SCMFW_WIDGET_CAPTION), SetMinimalSize(194, 14), SetDataTip(STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, SCMFW_WIDGET_CAPTION), SetMinimalSize(182, 14), SetDataTip(STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_IMGBTN, COLOUR_GREY, SCMFW_WIDGET_TOGGLE_LARGE_SMALL), SetMinimalSize(15, 14), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_FACE_SIMPLE_TIP), + NWidget(WWT_SHADEBOX, COLOUR_GREY, SCMFW_WIDGET_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, SCMFW_WIDGET_SELECT_FACE), NWidget(NWID_HORIZONTAL), @@ -1005,8 +1027,9 @@ /** Widget description for the advanced company manager face selection dialog */ static const Widget _select_company_manager_face_adv_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SCMFW_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 204, 0, 13, STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SCMFW_WIDGET_CAPTION -{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 205, 219, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_FACE_SIMPLE_TIP}, // SCMFW_WIDGET_TOGGLE_LARGE_SMALL +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 192, 0, 13, STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SCMFW_WIDGET_CAPTION +{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 193, 207, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_FACE_SIMPLE_TIP}, // SCMFW_WIDGET_TOGGLE_LARGE_SMALL +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 208, 219, 0, 13, 0x0, STR_SHADE_BUTTON}, // SCMFW_WIDGET_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 219, 14, 207, 0x0, STR_NULL}, // SCMFW_WIDGET_SELECT_FACE { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 94, 208, 219, STR_QUERY_CANCEL, STR_FACE_CANCEL_TOOLTIP}, // SCMFW_WIDGET_CANCEL { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 95, 219, 208, 219, STR_QUERY_OK, STR_FACE_OK_TOOLTIP}, // SCMFW_WIDGET_ACCEPT @@ -1181,6 +1204,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Draw dynamic button value and labels for the advanced company manager face selection window */ if (this->advanced) { if (this->is_female) { @@ -1353,7 +1379,7 @@ static const WindowDesc _select_company_manager_face_desc( WDP_AUTO, WDP_AUTO, 190, 163, 190, 163, WC_COMPANY_MANAGER_FACE, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_CONSTRUCTION, _select_company_manager_face_widgets, _nested_select_company_manager_face_widgets, lengthof(_nested_select_company_manager_face_widgets) ); @@ -1361,7 +1387,7 @@ static const WindowDesc _select_company_manager_face_adv_desc( WDP_AUTO, WDP_AUTO, 220, 220, 220, 220, WC_COMPANY_MANAGER_FACE, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_CONSTRUCTION, _select_company_manager_face_adv_widgets, _nested_select_company_manager_face_adv_widgets, lengthof(_nested_select_company_manager_face_adv_widgets) ); @@ -1386,6 +1412,7 @@ enum CompanyWindowWidgets { CW_WIDGET_CLOSEBOX = 0, CW_WIDGET_CAPTION, + CW_WIDGET_SHADEBOX, CW_WIDGET_FACE, CW_WIDGET_NEW_FACE, CW_WIDGET_COLOUR_SCHEME, @@ -1401,7 +1428,8 @@ static const Widget _company_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 359, 0, 13, STR_COMPANY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 347, 0, 13, STR_COMPANY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 348, 359, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 359, 14, 157, 0x0, STR_NULL}, { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 89, 158, 169, STR_COMPANY_VIEW_NEW_FACE_BUTTON, STR_COMPANY_VIEW_NEW_FACE_TOOLTIP}, { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 90, 179, 158, 169, STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON, STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP}, @@ -1420,6 +1448,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, CW_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, CW_WIDGET_CAPTION), SetDataTip(STR_COMPANY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, CW_WIDGET_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, CW_WIDGET_FACE), NWidget(NWID_SPACER), SetMinimalSize(360, 4), @@ -1596,6 +1625,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + #ifdef ENABLE_NETWORK if (_networking && NetworkCompanyIsPassworded(c->index)) { DrawSprite(SPR_LOCK, PAL_NONE, this->widget[CW_WIDGET_COMPANY_JOIN].left - 10, this->widget[CW_WIDGET_COMPANY_JOIN].top + 2); @@ -1754,7 +1786,7 @@ static const WindowDesc _company_desc( WDP_AUTO, WDP_AUTO, 360, 170, 360, 170, WC_COMPANY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _company_widgets, _nested_company_widgets,lengthof(_nested_company_widgets) ); @@ -1769,6 +1801,7 @@ enum BuyCompanyWidgets { BCW_CLOSEBOX, BCW_CAPTION, + BCW_SHADEBOX, BCW_BACKGROUND, BCW_NO, BCW_YES, @@ -1787,6 +1820,9 @@ SetDParam(1, c->index); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawCompanyManagerFace(c->face, c->colour, 2, 16); SetDParam(0, c->index); @@ -1810,7 +1846,8 @@ static const Widget _buy_company_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_LIGHT_BLUE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_LIGHT_BLUE, 11, 333, 0, 13, STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_LIGHT_BLUE, 11, 321, 0, 13, STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_LIGHT_BLUE, 322, 333, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_LIGHT_BLUE, 0, 333, 14, 136, 0x0, STR_NULL}, { WWT_TEXTBTN, RESIZE_NONE, COLOUR_LIGHT_BLUE, 148, 207, 117, 128, STR_NO, STR_NULL}, { WWT_TEXTBTN, RESIZE_NONE, COLOUR_LIGHT_BLUE, 218, 277, 117, 128, STR_YES, STR_NULL}, @@ -1821,6 +1858,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE, BCW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, BCW_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_LIGHT_BLUE, BCW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE, BCW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(334, 103), SetFill(1, 0), @@ -1838,7 +1876,7 @@ static const WindowDesc _buy_company_desc( 153, 171, 334, 137, 334, 137, WC_BUY_COMPANY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _buy_company_widgets, _nested_buy_company_widgets, lengthof(_nested_buy_company_widgets) ); Index: src/news_gui.cpp =================================================================== --- src/news_gui.cpp (revision 16883) +++ src/news_gui.cpp (working copy) @@ -178,6 +178,7 @@ NTW_CLOSEBOX, ///< Close the window. NTW_CAPTION, ///< Title bar of the window. Only used in type0-news. NTW_VIEWPORT, ///< Viewport in window. Only used in type0-news. + NTW_SHADEBOX, ///< Shade the window. Only used in type0-news }; struct NewsWindow : Window { @@ -352,7 +353,7 @@ static WindowDesc _news_type13_desc( WDP_CENTER, 476, 430, 170, 430, 170, WC_NEWS_WINDOW, WC_NONE, - WDF_DEF_WIDGET, + WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _news_type13_widgets, _nested_news_type13_widgets, lengthof(_nested_news_type13_widgets) ); @@ -375,14 +376,15 @@ static WindowDesc _news_type2_desc( WDP_CENTER, 476, 430, 130, 430, 130, WC_NEWS_WINDOW, WC_NONE, - WDF_DEF_WIDGET, + WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _news_type2_widgets, _nested_news_type2_widgets, lengthof(_nested_news_type2_widgets) ); static const Widget _news_type0_widgets[] = { { WWT_PANEL, RESIZE_NONE, COLOUR_LIGHT_BLUE, 0, 279, 14, 86, 0x0, STR_NULL}, { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_LIGHT_BLUE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_LIGHT_BLUE, 11, 279, 0, 13, STR_NEWS_MESSAGE_CAPTION, STR_NULL}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_LIGHT_BLUE, 11, 267, 0, 13, STR_NEWS_MESSAGE_CAPTION, STR_NULL}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_LIGHT_BLUE, 268, 275, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_INSET, RESIZE_NONE, COLOUR_LIGHT_BLUE, 2, 277, 16, 64, 0x0, STR_NULL}, { WIDGETS_END}, }; @@ -391,7 +393,8 @@ /* Caption + close box */ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE, NTW_CLOSEBOX), SetMinimalSize(11, 14), SetDataTip(STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW), - NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, NTW_CAPTION), SetMinimalSize(269, 14), SetDataTip(STR_NEWS_MESSAGE_CAPTION, STR_NULL), + NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, NTW_CAPTION), SetMinimalSize(257, 14), SetDataTip(STR_NEWS_MESSAGE_CAPTION, STR_NULL), + NWidget(WWT_SHADEBOX, COLOUR_LIGHT_BLUE, NTW_SHADEBOX), SetMinimalSize(12, 14), SetDataTip(0x0, STR_SHADE_BUTTON), EndContainer(), /* Main part */ @@ -412,7 +415,7 @@ static WindowDesc _news_type0_desc( WDP_CENTER, 476, 280, 87, 280, 87, WC_NEWS_WINDOW, WC_NONE, - WDF_DEF_WIDGET, + WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _news_type0_widgets, _nested_news_type0_widgets, lengthof(_nested_news_type0_widgets) ); @@ -772,6 +775,7 @@ enum MessageHistoryWidgets { MHW_CLOSEBOX, MHW_CAPTION, + MHW_SHADEBOX, MHW_STICKYBOX, MHW_BACKGROUND, MHW_SCROLLBAR, @@ -798,6 +802,9 @@ SetVScrollCount(this, _total_news); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + if (_total_news == 0) return; NewsItem *ni = _latest_news; @@ -841,7 +848,8 @@ static const Widget _message_history_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_BROWN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_BROWN, 11, 387, 0, 13, STR_MESSAGE_HISTORY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_BROWN, 11, 375, 0, 13, STR_MESSAGE_HISTORY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_BROWN, 376, 387, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_STICKYBOX, RESIZE_LR, COLOUR_BROWN, 388, 399, 0, 13, 0x0, STR_STICKY_BUTTON}, { WWT_PANEL, RESIZE_RB, COLOUR_BROWN, 0, 387, 14, 139, 0x0, STR_MESSAGE_HISTORY_TIP}, { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_BROWN, 388, 399, 14, 127, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, @@ -852,7 +860,8 @@ static const NWidgetPart _nested_message_history[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN, MHW_CLOSEBOX), SetMinimalSize(11, 14), SetDataTip(STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW), - NWidget(WWT_CAPTION, COLOUR_BROWN, MHW_CAPTION), SetMinimalSize(377, 14), SetDataTip(STR_MESSAGE_HISTORY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_BROWN, MHW_CAPTION), SetMinimalSize(365, 14), SetDataTip(STR_MESSAGE_HISTORY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_BROWN, MHW_SHADEBOX), SetMinimalSize(12, 14), SetDataTip(0x0, STR_SHADE_BUTTON), NWidget(WWT_STICKYBOX, COLOUR_BROWN, MHW_STICKYBOX), SetMinimalSize(12, 14), SetDataTip(0x0, STR_STICKY_BUTTON), EndContainer(), @@ -869,7 +878,7 @@ static const WindowDesc _message_history_desc( 240, 22, 400, 140, 400, 140, WC_MESSAGE_HISTORY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _message_history_widgets, _nested_message_history, lengthof(_nested_message_history) ); @@ -886,6 +895,7 @@ enum NewsSettingsWidgets { WIDGET_NEWSOPT_CLOSEBOX, ///< Close box. WIDGET_NEWSOPT_CAPTION, ///< Caption. + WIDGET_NEWSOPT_SHADEBOX, ///< Shade box. WIDGET_NEWSOPT_BACKGROUND, ///< Background widget. WIDGET_NEWSOPT_LABEL, ///< Top label. WIDGET_NEWSOPT_DROP_SUMMARY, ///< Dropdown that adjusts at once the level for all settings. @@ -941,6 +951,9 @@ this->widget[WIDGET_NEWSOPT_DROP_SUMMARY].data = _message_opt[this->state]; this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Draw the string of each setting on each button. */ for (int i = 0; i < NT_END; i++) { DrawString(this->widget[WIDGET_NEWSOPT_START_OPTION + 1].left, this->widget[WIDGET_NEWSOPT_START_OPTION + 1].right, @@ -1030,11 +1043,13 @@ static const Widget _message_options_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_BROWN, 0, 10, 0, 13, - STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_BROWN, 11, 409, 0, 13, + STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_BROWN, 11, 397, 0, 13, STR_NEWS_MESSAGE_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_BROWN, 398, 409, 0, 13, + 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_BROWN, 0, 409, 14, 64 + NT_END * NEWS_SETTING_BASELINE_SKIP, - 0x0, STR_NULL}, + 0x0, STR_NULL}, /* Text at the top of the main panel, in black */ { WWT_LABEL, RESIZE_NONE, COLOUR_BROWN, @@ -1124,6 +1139,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN, WIDGET_NEWSOPT_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_BROWN, WIDGET_NEWSOPT_CAPTION), SetDataTip(STR_NEWS_MESSAGE_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_BROWN, WIDGET_NEWSOPT_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WIDGET_NEWSOPT_BACKGROUND), NWidget(WWT_LABEL, COLOUR_BROWN, WIDGET_NEWSOPT_LABEL), SetMinimalSize(410, 14), SetDataTip(STR_NEWS_MESSAGE_TYPES, STR_NULL), @@ -1147,7 +1163,7 @@ 270, 22, 410, 65 + NT_END * NEWS_SETTING_BASELINE_SKIP, 410, 65 + NT_END * NEWS_SETTING_BASELINE_SKIP, WC_GAME_OPTIONS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _message_options_widgets, _nested_message_options_widgets, lengthof(_nested_message_options_widgets) ); Index: src/vehicle_gui.cpp =================================================================== --- src/vehicle_gui.cpp (revision 16883) +++ src/vehicle_gui.cpp (working copy) @@ -270,6 +270,7 @@ enum VehicleRefitWidgets { VRW_CLOSEBOX, VRW_CAPTION, + VRW_SHADEBOX, VRW_SELECTHEADER, VRW_MATRIX, VRW_SCROLLBAR, @@ -359,6 +360,9 @@ SetDParam(0, v->index); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->cargo = DrawVehicleRefitWindow(this->list, this->sel, this->vscroll.pos, this->vscroll.cap, this->resize.step_height, this->width - 2); if (this->cargo != NULL) { @@ -420,7 +424,8 @@ static const Widget _vehicle_refit_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // VRW_CLOSEBOX - { WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 239, 0, 13, STR_REFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // VRW_CAPTION + { WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 227, 0, 13, STR_REFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // VRW_CAPTION + { WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 228, 239, 0, 13, 0x0, STR_SHADE_BUTTON}, // VRW_SHADEBOX { WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 239, 14, 27, STR_REFIT_TITLE, STR_NULL}, // VRW_SELECTHEADER { WWT_MATRIX, RESIZE_BOTTOM, COLOUR_GREY, 0, 227, 28, 139, 0x801, STR_NULL}, // VRW_MATRIX { WWT_SCROLLBAR, RESIZE_BOTTOM, COLOUR_GREY, 228, 239, 28, 139, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, // VRW_SCROLLBAR @@ -434,6 +439,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, VRW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, VRW_CAPTION), SetDataTip(STR_REFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, VRW_SHADEBOX), EndContainer(), NWidget(WWT_TEXTBTN, COLOUR_GREY, VRW_SELECTHEADER), SetMinimalSize(240, 14), SetDataTip(STR_REFIT_TITLE, STR_NULL), /* Matrix + scrollbar. */ @@ -451,7 +457,7 @@ static const WindowDesc _vehicle_refit_desc( WDP_AUTO, WDP_AUTO, 240, 174, 240, 174, WC_VEHICLE_REFIT, WC_VEHICLE_VIEW, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_RESIZABLE | WDF_CONSTRUCTION, _vehicle_refit_widgets, _nested_vehicle_refit_widgets, lengthof(_nested_vehicle_refit_widgets) ); @@ -700,6 +706,7 @@ enum VehicleListWindowWidgets { VLW_WIDGET_CLOSEBOX = 0, VLW_WIDGET_CAPTION, + VLW_WIDGET_SHADEBOX, VLW_WIDGET_STICKY, VLW_WIDGET_SORT_ORDER, VLW_WIDGET_SORT_BY_PULLDOWN, @@ -717,7 +724,8 @@ static const Widget _vehicle_list_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, - { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 247, 0, 13, 0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, + { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 235, 0, 13, 0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, + { WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 236, 247, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, { WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 80, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP}, { WWT_DROPDOWN, RESIZE_NONE, COLOUR_GREY, 81, 247, 14, 25, 0x0, STR_SORT_CRITERIA_TIP}, @@ -740,7 +748,8 @@ static const NWidgetPart _nested_vehicle_list[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, VLW_WIDGET_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, VLW_WIDGET_CAPTION), SetMinimalSize(237, 14), SetDataTip(0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, VLW_WIDGET_CAPTION), SetMinimalSize(225, 14), SetDataTip(0x0, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, VLW_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, VLW_WIDGET_STICKY), EndContainer(), @@ -1075,6 +1084,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* draw arrow pointing up/down for ascending/descending sorting */ this->DrawSortButtonState(VLW_WIDGET_SORT_ORDER, this->vehicles.IsDescSortOrder() ? SBS_DOWN : SBS_UP); @@ -1206,7 +1218,7 @@ static WindowDesc _vehicle_list_desc( WDP_AUTO, WDP_AUTO, 260, 194, 260, 246, WC_INVALID, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _vehicle_list_widgets, _nested_vehicle_list, lengthof(_nested_vehicle_list) ); @@ -1272,6 +1284,7 @@ VLD_WIDGET_CLOSEBOX = 0, VLD_WIDGET_CAPTION, VLD_WIDGET_RENAME_VEHICLE, + VLD_WIDGET_SHADEBOX, VLD_WIDGET_STICKY, VLD_WIDGET_TOP_DETAILS, VLD_WIDGET_INCREASE_SERVICING_INTERVAL, @@ -1294,8 +1307,9 @@ /** Vehicle details widgets. */ static const Widget _vehicle_details_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // VLD_WIDGET_CLOSEBOX - { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 352, 0, 13, STR_VEHICLE_DETAILS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // VLD_WIDGET_CAPTION - { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 353, 392, 0, 13, STR_VEHICLE_NAME_BUTTON, STR_NULL /* filled in later */}, // VLD_WIDGET_RENAME_VEHICLE + { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 340, 0, 13, STR_VEHICLE_DETAILS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // VLD_WIDGET_CAPTION + { WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_GREY, 341, 380, 0, 13, STR_VEHICLE_NAME_BUTTON, STR_NULL /* filled in later */}, // VLD_WIDGET_RENAME_VEHICLE + { WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 381, 392, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // VLD_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 393, 404, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // VLD_WIDGET_STICKY { WWT_PANEL, RESIZE_RIGHT, COLOUR_GREY, 0, 404, 14, 55, 0x0, STR_NULL}, // VLD_WIDGET_TOP_DETAILS { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 10, 101, 106, STR_SMALL_ARROW_UP, STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP}, // VLD_WIDGET_INCREASE_SERVICING_INTERVAL @@ -1316,6 +1330,7 @@ NWidget(WWT_CLOSEBOX, COLOUR_GREY, VLD_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, VLD_WIDGET_CAPTION), SetDataTip(STR_VEHICLE_DETAILS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, VLD_WIDGET_RENAME_VEHICLE), SetMinimalSize(40, 14), SetDataTip(STR_VEHICLE_NAME_BUTTON, STR_NULL /* filled in later */), + NWidget(WWT_SHADEBOX, COLOUR_GREY, VLD_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, VLD_WIDGET_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, VLD_WIDGET_TOP_DETAILS), SetResize(1, 0), SetMinimalSize(405, 42), EndContainer(), @@ -1474,6 +1489,9 @@ SetDParam(0, v->index); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Draw running cost */ SetDParam(1, v->age / DAYS_IN_LEAP_YEAR); SetDParam(0, (v->age + DAYS_IN_YEAR < v->max_age) ? STR_AGE : STR_AGE_RED); @@ -1611,7 +1629,7 @@ static const WindowDesc _vehicle_details_desc( WDP_AUTO, WDP_AUTO, 405, 113, 405, 113, WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _vehicle_details_widgets, _nested_vehicle_details_widgets, lengthof(_nested_vehicle_details_widgets) ); @@ -1629,7 +1647,8 @@ /** Vehicle view widgets. */ static const Widget _vehicle_view_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW }, // VVW_WIDGET_CLOSEBOX - { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 237, 0, 13, STR_VEHICLE_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, // VVW_WIDGET_CAPTION + { WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 225, 0, 13, STR_VEHICLE_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS }, // VVW_WIDGET_CAPTION + { WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 226, 237, 0, 13, 0x0, STR_SHADE_BUTTON }, // VVW_WIDGET_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 238, 249, 0, 13, 0x0, STR_STICKY_BUTTON }, // VVW_WIDGET_STICKY { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 231, 14, 103, 0x0, STR_NULL }, // VVW_WIDGET_PANEL { WWT_INSET, RESIZE_RB, COLOUR_GREY, 2, 229, 16, 101, 0x0, STR_NULL }, // VVW_WIDGET_VIEWPORT @@ -1651,6 +1670,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, VVW_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, VVW_WIDGET_CAPTION), SetDataTip(STR_VEHICLE_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, VVW_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, VVW_WIDGET_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -1686,7 +1706,7 @@ static const WindowDesc _vehicle_view_desc( WDP_AUTO, WDP_AUTO, 250, 116, 250, 116, WC_VEHICLE_VIEW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _vehicle_view_widgets, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets) ); @@ -1696,7 +1716,7 @@ static const WindowDesc _train_view_desc( WDP_AUTO, WDP_AUTO, 250, 134, 250, 134, WC_VEHICLE_VIEW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _vehicle_view_widgets, _nested_vehicle_view_widgets, lengthof(_nested_vehicle_view_widgets) ); @@ -1950,6 +1970,9 @@ SetDParam(0, v->index); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + if (v->vehstatus & VS_CRASHED) { str = STR_VEHICLE_STATUS_CRASHED; } else if (v->type != VEH_AIRCRAFT && v->breakdown_ctr == 1) { // check for aircraft necessary? Index: src/network/network_content_gui.cpp =================================================================== --- src/network/network_content_gui.cpp (revision 16883) +++ src/network/network_content_gui.cpp (working copy) @@ -178,6 +178,7 @@ enum NetworkContentListWindowWidgets { NCLWW_CLOSE, ///< Close 'X' button NCLWW_CAPTION, ///< Caption of the window + NCLWW_SHADEBOX, ///< Shade button NCLWW_BACKGROUND, ///< Resize button NCLWW_FILTER, ///< Filter editbox @@ -402,6 +403,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Edit box to filter for keywords */ this->DrawEditBox(NCLWW_FILTER); DrawString(this->widget[NCLWW_MATRIX].left, this->widget[NCLWW_FILTER].left - 8, this->widget[NCLWW_FILTER].top + 2, STR_CONTENT_FILTER_TITLE, TC_FROMSTRING, SA_RIGHT); @@ -742,7 +746,8 @@ static const Widget _network_content_list_widgets[] = { /* TOP */ { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_LIGHT_BLUE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // NCLWW_CLOSE -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_LIGHT_BLUE, 11, 449, 0, 13, STR_CONTENT_TITLE, STR_NULL}, // NCLWW_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_LIGHT_BLUE, 11, 437, 0, 13, STR_CONTENT_TITLE, STR_NULL}, // NCLWW_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_LIGHT_BLUE, 438, 449, 0, 13, 0x0, STR_SHADE_BUTTON}, // NCLWW_SHADEBOX { WWT_PANEL, RESIZE_RB, COLOUR_LIGHT_BLUE, 0, 449, 14, 277, 0x0, STR_NULL}, // NCLWW_BACKGROUND { WWT_EDITBOX, RESIZE_LR, COLOUR_LIGHT_BLUE, 210, 440, 20, 31, STR_CONTENT_FILTER_OSKTITLE, STR_CONTENT_FILTER_TIP}, // NCLWW_FILTER @@ -774,6 +779,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE, NCLWW_CLOSE), NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, NCLWW_CAPTION), SetDataTip(STR_CONTENT_TITLE, STR_NULL), + NWidget(WWT_SHADEBOX, COLOUR_LIGHT_BLUE, NCLWW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE, NCLWW_BACKGROUND), NWidget(NWID_HORIZONTAL), SetPIP(8, 7, 9), @@ -836,7 +842,7 @@ static const WindowDesc _network_content_list_desc( WDP_CENTER, WDP_CENTER, 450, 278, 630, 460, WC_NETWORK_WINDOW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE | WDF_SHADE_BUTTON, _network_content_list_widgets, _nested_network_content_list_widgets, lengthof(_nested_network_content_list_widgets) ); Index: src/network/network_gui.cpp =================================================================== --- src/network/network_gui.cpp (revision 16883) +++ src/network/network_gui.cpp (working copy) @@ -77,6 +77,7 @@ enum NetworkGameWindowWidgets { NGWW_CLOSE, ///< Close 'X' button NGWW_CAPTION, ///< Caption of the window + NGWW_SHADEBOX, ///< Shade button NGWW_MAIN, ///< Main panel NGWW_CONNECTION, ///< Label in from of connection droplist @@ -381,6 +382,9 @@ SetDParam(1, _lan_internet_types_dropdown[_settings_client.network.lan_internet]); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Edit box to set client name */ this->DrawEditBox(NGWW_CLIENT); @@ -785,7 +789,8 @@ static const Widget _network_game_window_widgets[] = { /* TOP */ { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_LIGHT_BLUE, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // NGWW_CLOSE -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_LIGHT_BLUE, 11, 449, 0, 13, STR_NETWORK_MULTIPLAYER, STR_NULL}, // NGWW_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_LIGHT_BLUE, 11, 437, 0, 13, STR_NETWORK_MULTIPLAYER, STR_NULL}, // NGWW_CAPTION +{ WWT_SHADEBOX, RESIZE_RIGHT, COLOUR_LIGHT_BLUE, 438, 449, 0, 13, 0x0, STR_SHADE_BUTTON}, // NGWW_SHADEBOX { WWT_PANEL, RESIZE_RB, COLOUR_LIGHT_BLUE, 0, 449, 14, 263, 0x0, STR_NULL}, // NGWW_MAIN { WWT_TEXT, RESIZE_NONE, COLOUR_LIGHT_BLUE, 9, 85, 23, 35, STR_NETWORK_CONNECTION, STR_NULL}, // NGWW_CONNECTION @@ -833,7 +838,8 @@ /* TOP */ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE, NGWW_CLOSE), - NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, NGWW_CAPTION), SetMinimalSize(439, 14), SetDataTip(STR_NETWORK_MULTIPLAYER, STR_NULL), // XXX Add default caption tooltip! + NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, NGWW_CAPTION), SetMinimalSize(427, 14), SetDataTip(STR_NETWORK_MULTIPLAYER, STR_NULL), // XXX Add default caption tooltip! + NWidget(WWT_SHADEBOX, COLOUR_LIGHT_BLUE, NGWW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE, NGWW_MAIN), NWidget(NWID_SPACER), SetMinimalSize(0, 8), SetResize(1, 0), @@ -936,7 +942,7 @@ static const WindowDesc _network_game_window_desc( WDP_CENTER, WDP_CENTER, 450, 264, 780, 264, WC_NETWORK_WINDOW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_RESIZABLE, _network_game_window_widgets, _nested_network_game_widgets, lengthof(_nested_network_game_widgets) ); @@ -1031,6 +1037,9 @@ SetDParam(5, STR_NETWORK_LANG_ANY + _settings_client.network.server_lang); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* editbox to set game name */ this->DrawEditBox(NSSW_GAMENAME); @@ -1433,6 +1442,9 @@ SetDParamStr(0, gi->server_name); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + SetVScrollCount(this, gi->companies_on); /* Draw company list */ @@ -1680,13 +1692,15 @@ enum ClientListWidgets { CLW_CLOSE, CLW_CAPTION, + CLW_SHADEBOX, CLW_STICKY, CLW_PANEL, }; static const Widget _client_list_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 237, 0, 13, STR_NETWORK_CLIENT_LIST, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 225, 0, 13, STR_NETWORK_CLIENT_LIST, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 226, 237, 0, 13, STR_NULL, STR_SHADE_BUTTON}, { WWT_STICKYBOX, RESIZE_NONE, COLOUR_GREY, 238, 249, 0, 13, STR_NULL, STR_STICKY_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 249, 14, 14 + CLNWND_ROWSIZE + 1, 0x0, STR_NULL}, @@ -1697,6 +1711,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, CLW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, CLW_CAPTION), SetDataTip(STR_NETWORK_CLIENT_LIST, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, CLW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, CLW_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, CLW_PANEL), SetMinimalSize(250, CLNWND_ROWSIZE + 2), EndContainer(), @@ -1714,7 +1729,7 @@ static const WindowDesc _client_list_desc( WDP_AUTO, WDP_AUTO, 250, 1, 250, 1, WC_CLIENT_LIST, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_SHADE_BUTTON, _client_list_widgets, _nested_client_list_widgets, lengthof(_nested_client_list_widgets) ); @@ -1882,6 +1897,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Draw the actions */ int sel = this->sel_index; int y = 1; @@ -1975,7 +1993,7 @@ if (this->height != CLNWND_OFFSET + num + 1) { /* XXX - magic unfortunately; (num + 2) has to be one bigger than heigh (num + 1) */ this->SetDirty(); - this->widget[3].bottom = this->widget[3].top + num + 2; + this->widget[CLW_PANEL].bottom = this->widget[CLW_PANEL].top + num + 2; this->height = CLNWND_OFFSET + num + 1; this->SetDirty(); return false; @@ -1993,6 +2011,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + int y = CLNWND_OFFSET; FOR_ALL_CLIENT_INFOS(ci) { @@ -2099,6 +2120,9 @@ uint8 progress; // used for progress bar this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawString(this->widget[NJSW_BACKGROUND].left + 2, this->widget[NJSW_BACKGROUND].right - 2, 35, STR_NETWORK_CONNECTING_1 + _network_join_status, TC_FROMSTRING, SA_CENTER); switch (_network_join_status) { case NETWORK_JOIN_STATUS_CONNECTING: case NETWORK_JOIN_STATUS_AUTHORIZING: @@ -2175,6 +2199,7 @@ enum NetworkCompanyPasswordWindowWidgets { NCPWW_CLOSE, ///< Close 'X' button NCPWW_CAPTION, ///< Caption of the whole window + NCPWW_SHADEBOX, ///< Shade button NCPWW_BACKGROUND, ///< The background of the interface NCPWW_LABEL, ///< Label in front of the password field NCPWW_PASSWORD, ///< Input field for the password @@ -2209,6 +2234,10 @@ virtual void OnPaint() { this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->DrawEditBox(4); } @@ -2260,7 +2289,8 @@ static const Widget _ncp_window_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 299, 0, 13, STR_COMPANY_PASSWORD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 287, 0, 13, STR_COMPANY_PASSWORD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 288, 299, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 299, 14, 50, 0x0, STR_NULL}, { WWT_TEXT, RESIZE_NONE, COLOUR_GREY, 5, 100, 19, 30, STR_COMPANY_PASSWORD, STR_NULL}, { WWT_EDITBOX, RESIZE_NONE, COLOUR_GREY, 101, 294, 19, 30, STR_SET_COMPANY_PASSWORD, STR_NULL}, @@ -2274,6 +2304,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, NCPWW_CLOSE), NWidget(WWT_CAPTION, COLOUR_GREY, NCPWW_CAPTION), SetDataTip(STR_COMPANY_PASSWORD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, NCPWW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, NCPWW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 5), @@ -2300,7 +2331,7 @@ static const WindowDesc _ncp_window_desc( WDP_AUTO, WDP_AUTO, 300, 63, 300, 63, WC_COMPANY_PASSWORD_WINDOW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON, _ncp_window_widgets, _nested_ncp_window_widgets, lengthof(_nested_ncp_window_widgets) ); Index: src/transparency_gui.cpp =================================================================== --- src/transparency_gui.cpp (revision 16883) +++ src/transparency_gui.cpp (working copy) @@ -19,6 +19,7 @@ enum TransparencyToolbarWidgets { TTW_WIDGET_CLOSEBOX, ///< Closebox TTW_WIDGET_CAPTION, ///< Titlebar caption + TTW_WIDGET_SHADEBOX, ///< Shadebox TTW_WIDGET_STICKYBOX, ///< Stickybox TTW_WIDGET_SIGNS, ///< Make signs background transparent TTW_WIDGET_TREES, ///< Make trees transparent @@ -32,7 +33,7 @@ TTW_WIDGET_END, ///< End of toggle buttons /* Panel with buttons for invisibility */ - TTW_BUTTONS = 12, ///< Panel with 'invisibility' buttons + TTW_BUTTONS = TTW_WIDGET_END, ///< Panel with 'invisibility' buttons }; class TransparenciesWindow : public Window @@ -52,6 +53,10 @@ } this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + for (uint i = TO_SIGNS; i < TO_END; i++) { if (HasBit(_transparency_lock, i)) DrawSprite(SPR_LOCK, PAL_NONE, this->widget[TTW_WIDGET_SIGNS + i].left + 1, this->widget[TTW_WIDGET_SIGNS + i].top + 1); } @@ -97,7 +102,8 @@ static const Widget _transparency_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 206, 0, 13, STR_TRANSPARENCY_TOOLB, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 194, 0, 13, STR_TRANSPARENCY_TOOLB, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 195, 206, 0, 13, STR_NULL, STR_SHADE_BUTTON}, {WWT_STICKYBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 207, 218, 0, 13, STR_NULL, STR_STICKY_BUTTON}, /* transparency widgets: @@ -121,6 +127,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, TTW_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, TTW_WIDGET_CAPTION), SetDataTip(STR_TRANSPARENCY_TOOLB, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, TTW_WIDGET_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, TTW_WIDGET_STICKYBOX), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -142,7 +149,7 @@ static const WindowDesc _transparency_desc( WDP_ALIGN_TBR, 94, 219, 49, 219, 49, WC_TRANSPARENCY_TOOLBAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON, _transparency_widgets, _nested_transparency_widgets, lengthof(_nested_transparency_widgets) ); Index: src/dock_gui.cpp =================================================================== --- src/dock_gui.cpp (revision 16883) +++ src/dock_gui.cpp (working copy) @@ -89,6 +89,7 @@ DTW_BEGIN = 0, ///< Start of toolbar widgets DTW_CLOSEBOX = DTW_BEGIN, ///< Close window button DTW_CAPTION, ///< Window caption + DTW_SHADE, ///< Shade window button DTW_STICKY, ///< Sticky window button DTW_BUTTONS_BEGIN, ///< Begin of clickable buttons (except seperating panel) DTW_CANAL = DTW_BUTTONS_BEGIN, ///< Build canal button @@ -258,7 +259,8 @@ static const Widget _build_docks_toolb_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // DTW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 147, 0, 13, STR_WATERWAYS_TOOLBAR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // DTW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 135, 0, 13, STR_WATERWAYS_TOOLBAR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // DTW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 136, 147, 0, 13, 0x0, STR_SHADE_BUTTON}, // DTW_SHADE { WWT_STICKYBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 148, 159, 0, 13, 0x0, STR_STICKY_BUTTON}, // DTW_STICKY { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 21, 14, 35, SPR_IMG_BUILD_CANAL, STR_BUILD_CANALS_TIP}, // DTW_CANAL { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 22, 43, 14, 35, SPR_IMG_BUILD_LOCK, STR_BUILD_LOCKS_TIP}, // DTW_LOCK @@ -281,7 +283,8 @@ static const NWidgetPart _nested_build_docks_toolbar_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, DTW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, DTW_CAPTION), SetMinimalSize(80, 14), SetFill(1, 0), SetDataTip(STR_WATERWAYS_TOOLBAR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, DTW_CAPTION), SetMinimalSize(68, 14), SetFill(1, 0), SetDataTip(STR_WATERWAYS_TOOLBAR_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, DTW_SHADE), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, DTW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL_LTR), @@ -300,7 +303,7 @@ static const WindowDesc _build_docks_toolbar_desc( WDP_ALIGN_TBR, 22, 160, 36, 160, 36, WC_BUILD_TOOLBAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, _build_docks_toolb_widgets, _nested_build_docks_toolbar_widgets, lengthof(_nested_build_docks_toolbar_widgets) ); @@ -315,7 +318,8 @@ /** Widget definition for the build docks in scenario editor window. */ static const Widget _build_docks_scen_toolb_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // DTW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 102, 0, 13, STR_WATERWAYS_TOOLBAR_CAPTION_SE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // DTW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 90, 0, 13, STR_WATERWAYS_TOOLBAR_CAPTION_SE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // DTW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 91, 102, 0, 13, 0x0, STR_SHADE_BUTTON}, // DTW_SHADE { WWT_STICKYBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 103, 114, 0, 13, 0x0, STR_STICKY_BUTTON}, // DTW_STICKY { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 21, 14, 35, SPR_IMG_BUILD_CANAL, STR_CREATE_LAKE}, // DTW_CANAL { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 22, 43, 14, 35, SPR_IMG_BUILD_LOCK, STR_BUILD_LOCKS_TIP}, // DTW_LOCK @@ -338,7 +342,8 @@ static const NWidgetPart _nested_build_docks_scen_toolbar_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, DTW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, DTW_CAPTION), SetMinimalSize(80, 14), SetFill(1, 0), SetDataTip(STR_WATERWAYS_TOOLBAR_CAPTION_SE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, DTW_CAPTION), SetMinimalSize(68, 14), SetFill(1, 0), SetDataTip(STR_WATERWAYS_TOOLBAR_CAPTION_SE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, DTW_SHADE), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, DTW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -358,7 +363,7 @@ static const WindowDesc _build_docks_scen_toolbar_desc( WDP_AUTO, WDP_AUTO, 115, 36, 115, 36, WC_SCEN_BUILD_TOOLBAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, _build_docks_scen_toolb_widgets, _nested_build_docks_scen_toolbar_widgets, lengthof(_nested_build_docks_scen_toolbar_widgets) ); @@ -371,6 +376,7 @@ enum BuildDockStationWidgets { BDSW_CLOSE, ///< Closebox. BDSW_CAPTION, ///< Titlebar. + BDSW_SHADE, ///< Shade button. BDSW_BACKGROUND, ///< Background panel. BDSW_LT_OFF, ///< 'Off' button of coverage high light. BDSW_LT_ON, ///< 'On' button of coverage high light. @@ -396,6 +402,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + if (_settings_client.gui.station_show_coverage) { SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad); } else { @@ -435,7 +444,8 @@ static const Widget _build_dock_station_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BDSW_CLOSE -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 147, 0, 13, STR_STATION_BUILD_DOCK_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BDSW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 135, 0, 13, STR_STATION_BUILD_DOCK_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BDSW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 136, 147, 0, 13, 0x0, STR_SHADE_BUTTON}, // BDSW_SHADE { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 147, 14, 74, 0x0, STR_NULL}, // BDSW_BACKGROUND { WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 14, 73, 31, 42, STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP}, // BDSW_LT_OFF { WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 74, 133, 31, 42, STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP}, // BDSW_LT_ON @@ -448,6 +458,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BDSW_CLOSE), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BDSW_CAPTION), SetDataTip(STR_STATION_BUILD_DOCK_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BDSW_SHADE), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BDSW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 3), @@ -463,7 +474,7 @@ static const WindowDesc _build_dock_station_desc( WDP_AUTO, WDP_AUTO, 148, 75, 148, 75, WC_BUILD_STATION, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_CONSTRUCTION, _build_dock_station_widgets, _nested_build_dock_station_widgets, lengthof(_nested_build_dock_station_widgets) ); @@ -476,6 +487,7 @@ enum BuildDockDepotWidgets { BDDW_CLOSE, BDDW_CAPTION, + BDDW_SHADE, BDDW_BACKGROUND, BDDW_X, BDDW_Y, @@ -504,6 +516,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawShipDepotSprite(67, 35, 0); DrawShipDepotSprite(35, 51, 1); DrawShipDepotSprite(135, 35, 2); @@ -528,7 +543,8 @@ static const Widget _build_docks_depot_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BDDW_CLOSE -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 203, 0, 13, STR_DEPOT_BUILD_SHIP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BDDW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 191, 0, 13, STR_DEPOT_BUILD_SHIP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BDDW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 192, 203, 0, 13, 0x0, STR_SHADE_BUTTON}, // BDDW_SHADE { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 203, 14, 85, 0x0, STR_NULL}, // BDDW_BACKGROUND { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 3, 100, 17, 82, 0x0, STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP}, // BDDW_X { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 103, 200, 17, 82, 0x0, STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP}, // BDDW_Y @@ -538,7 +554,8 @@ static const NWidgetPart _nested_build_docks_depot_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BDDW_CLOSE), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BDDW_CAPTION), SetMinimalSize(193, 14), SetDataTip(STR_DEPOT_BUILD_SHIP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BDDW_CAPTION), SetMinimalSize(169, 14), SetDataTip(STR_DEPOT_BUILD_SHIP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BDDW_SHADE), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BDDW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 3), @@ -558,7 +575,7 @@ static const WindowDesc _build_docks_depot_desc( WDP_AUTO, WDP_AUTO, 204, 86, 204, 86, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_CONSTRUCTION, _build_docks_depot_widgets, _nested_build_docks_depot_widgets, lengthof(_nested_build_docks_depot_widgets) ); Index: src/subsidy_gui.cpp =================================================================== --- src/subsidy_gui.cpp (revision 16883) +++ src/subsidy_gui.cpp (working copy) @@ -23,6 +23,7 @@ enum SubsidyListWidgets { SLW_CLOSEBOX, SLW_CAPTION, + SLW_SHADEBOX, SLW_STICKYBOX, SLW_PANEL, SLW_SCROLLBAR, @@ -119,6 +120,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + ConvertDateToYMD(_date, &ymd); int right = this->widget[SLW_PANEL].right; @@ -172,7 +176,8 @@ static const Widget _subsidies_list_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_BROWN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // SLW_CLOSEBOX -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_BROWN, 11, 307, 0, 13, STR_SUBSIDIES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SLW_CAPTION +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_BROWN, 11, 295, 0, 13, STR_SUBSIDIES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // SLW_CAPTION +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_BROWN, 296, 307, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // SLW_SHADEBOX { WWT_STICKYBOX, RESIZE_LR, COLOUR_BROWN, 308, 319, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // SLW_STICKYBOX { WWT_PANEL, RESIZE_RB, COLOUR_BROWN, 0, 307, 14, 126, 0x0, STR_SUBSIDY_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER}, // SLW_PANEL { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_BROWN, 308, 319, 14, 114, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, // SLW_SCROLLBAR @@ -185,6 +190,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN, SLW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_BROWN, SLW_CAPTION), SetDataTip(STR_SUBSIDIES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_BROWN, SLW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_BROWN, SLW_STICKYBOX), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -199,7 +205,7 @@ static const WindowDesc _subsidies_list_desc( WDP_AUTO, WDP_AUTO, 320, 127, 320, 127, WC_SUBSIDIES_LIST, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _subsidies_list_widgets, _nested_subsidies_list_widgets, lengthof(_nested_subsidies_list_widgets) ); Index: src/road_gui.cpp =================================================================== --- src/road_gui.cpp (revision 16883) +++ src/road_gui.cpp (working copy) @@ -237,6 +237,7 @@ enum RoadToolbarWidgets { RTW_CLOSEBOX = 0, RTW_CAPTION, + RTW_SHADEBOX, RTW_STICKY, RTW_ROAD_X, RTW_ROAD_Y, @@ -626,7 +627,8 @@ /** Widget definition of the build road toolbar */ static const Widget _build_road_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // RTW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 250, 0, 13, STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 238, 0, 13, STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 239, 250, 0, 13, 0x0, STR_SHADE_BUTTON}, // RTW_SHADEBOX { WWT_STICKYBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 251, 262, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 21, 14, 35, SPR_IMG_ROAD_X_DIR, STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION}, // RTW_ROAD_X @@ -647,7 +649,8 @@ static const NWidgetPart _nested_build_road_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, RTW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, RTW_CAPTION), SetMinimalSize(240, 14), SetDataTip(STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, RTW_CAPTION), SetMinimalSize(226, 14), SetDataTip(STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, RTW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, RTW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -668,14 +671,15 @@ static const WindowDesc _build_road_desc( WDP_ALIGN_TBR, 22, 263, 36, 263, 36, WC_BUILD_TOOLBAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, _build_road_widgets, _nested_build_road_widgets, lengthof(_nested_build_road_widgets) ); /** Widget definition of the build tram toolbar */ static const Widget _build_tramway_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // RTW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 228, 0, 13, STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 216, 0, 13, STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 217, 228, 0, 13, 0x0, STR_SHADE_BUTTON}, // RTW_SHADEBOX { WWT_STICKYBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 229, 240, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 21, 14, 35, SPR_IMG_TRAMWAY_X_DIR, STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION}, // RTW_ROAD_X @@ -696,7 +700,8 @@ static const NWidgetPart _nested_build_tramway_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, RTW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, RTW_CAPTION), SetMinimalSize(218, 14), SetDataTip(STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, RTW_CAPTION), SetMinimalSize(206, 14), SetDataTip(STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, RTW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, RTW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -717,7 +722,7 @@ static const WindowDesc _build_tramway_desc( WDP_ALIGN_TBR, 22, 241, 36, 241, 36, WC_BUILD_TOOLBAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, _build_tramway_widgets, _nested_build_tramway_widgets, lengthof(_nested_build_tramway_widgets) ); @@ -733,7 +738,8 @@ /** Widget definition of the build road toolbar in the scenario editor */ static const Widget _build_road_scen_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // RTW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 184, 0, 13, STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 172, 0, 13, STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 173, 184, 0, 13, 0x0, STR_SHADE_BUTTON}, // RTW_SHADEBOX { WWT_STICKYBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 185, 196, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY { WWT_IMGBTN, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 21, 14, 35, SPR_IMG_ROAD_X_DIR, STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION}, // RTW_ROAD_X @@ -753,7 +759,8 @@ static const NWidgetPart _nested_build_road_scen_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, RTW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, RTW_CAPTION), SetMinimalSize(174, 14), SetDataTip(STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, RTW_CAPTION), SetMinimalSize(162, 14), SetDataTip(STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, RTW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN, RTW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -774,7 +781,7 @@ static const WindowDesc _build_road_scen_desc( WDP_AUTO, WDP_AUTO, 197, 36, 197, 36, WC_SCEN_BUILD_TOOLBAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_CONSTRUCTION, _build_road_scen_widgets, _nested_build_road_scen_widgets, lengthof(_nested_build_road_scen_widgets) ); @@ -788,6 +795,7 @@ enum BuildRoadDepotWidgets { BRDW_CLOSEBOX = 0, BRDW_CAPTION, + BRDW_SHADEBOX, BRDW_BACKGROUND, BRDW_DEPOT_NE, BRDW_DEPOT_SE, @@ -810,6 +818,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawRoadDepotSprite(this->widget[BRDW_DEPOT_NE].left - 1, this->widget[BRDW_DEPOT_NE].top, DIAGDIR_NE, _cur_roadtype); DrawRoadDepotSprite(this->widget[BRDW_DEPOT_SE].left - 1, this->widget[BRDW_DEPOT_SE].top, DIAGDIR_SE, _cur_roadtype); DrawRoadDepotSprite(this->widget[BRDW_DEPOT_SW].left - 1, this->widget[BRDW_DEPOT_SW].top, DIAGDIR_SW, _cur_roadtype); @@ -840,11 +851,12 @@ static const Widget _build_road_depot_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BRDW_CLOSEBOX { WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 139, 0, 13, STR_BUILD_DEPOT_ROAD_ORIENTATION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRDW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 140, 151, 0, 13, 0x0, STR_SHADE_BUTTON}, // BRDW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 71, 136, 17, 66, 0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NE -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 71, 136, 69, 118, 0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SE -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 3, 68, 69, 118, 0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SW -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 3, 68, 17, 66, 0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NW +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 78, 143, 17, 66, 0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NE +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 78, 143, 69, 118, 0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SE +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 8, 73, 69, 118, 0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SW +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 8, 73, 17, 66, 0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NW { WIDGETS_END}, }; @@ -852,11 +864,12 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BRDW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BRDW_CAPTION), SetMinimalSize(129, 14), SetDataTip(STR_BUILD_DEPOT_ROAD_ORIENTATION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BRDW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRDW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 3), NWidget(NWID_HORIZONTAL_LTR), - NWidget(NWID_SPACER), SetMinimalSize(3, 0), + NWidget(NWID_SPACER), SetMinimalSize(8, 0), NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_NW), SetMinimalSize(66, 50), SetDataTip(0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT), EndContainer(), @@ -864,7 +877,7 @@ NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_SW), SetMinimalSize(66, 50), SetDataTip(0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT), EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), + NWidget(NWID_SPACER), SetMinimalSize(4, 0), NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_NE), SetMinimalSize(66, 50), SetDataTip(0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT), EndContainer(), @@ -872,16 +885,16 @@ NWidget(WWT_PANEL, COLOUR_GREY, BRDW_DEPOT_SE), SetMinimalSize(66, 50), SetDataTip(0x0, STR_ROAD_TOOLBAR_TOOLTIP_SELECT_ROAD_VEHICLE_DEPOT), EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(3, 0), + NWidget(NWID_SPACER), SetMinimalSize(8, 0), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 3), EndContainer(), }; static const WindowDesc _build_road_depot_desc( - WDP_AUTO, WDP_AUTO, 140, 122, 140, 122, + WDP_AUTO, WDP_AUTO, 152, 122, 152, 122, WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _build_road_depot_widgets, _nested_build_road_depot_widgets, lengthof(_nested_build_road_depot_widgets) ); @@ -894,6 +907,7 @@ enum BuildRoadStationWidgets { BRSW_CLOSEBOX = 0, BRSW_CAPTION, + BRSW_SHADEBOX, BRSW_BACKGROUND, BRSW_STATION_NE, BRSW_STATION_SE, @@ -938,6 +952,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + int rad = _settings_game.station.modified_catchment ? CA_TRUCK /* = CA_BUS */ : CA_UNMODIFIED; if (_settings_client.gui.station_show_coverage) { SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad); @@ -1007,7 +1024,8 @@ /** Widget definition of the build road station window */ static const Widget _rv_station_picker_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BRSW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 206, 0, 13, STR_NULL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 194, 0, 13, STR_NULL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 195, 206, 0, 13, STR_NULL, STR_SHADE_BUTTON}, // BRSW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 206, 14, 177, 0x0, STR_NULL}, // BRSW_BACKGROUND { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 71, 136, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_NE @@ -1027,6 +1045,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BRSW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BRSW_CAPTION), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BRSW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BRSW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 3), @@ -1060,7 +1079,7 @@ static const WindowDesc _rv_station_picker_desc( WDP_AUTO, WDP_AUTO, 207, 178, 207, 178, WC_BUS_STATION, WC_BUILD_TOOLBAR, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _rv_station_picker_widgets, _nested_rv_station_picker_widgets, lengthof(_nested_rv_station_picker_widgets) ); Index: src/tree_gui.cpp =================================================================== --- src/tree_gui.cpp (revision 16883) +++ src/tree_gui.cpp (working copy) @@ -23,6 +23,7 @@ enum BuildTreesWidgets { BTW_CLOSE, BTW_CAPTION, + BTW_SHADEBOX, BTW_BACKGROUND, BTW_TYPE_11, BTW_TYPE_12, @@ -79,6 +80,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + int i = this->base = _tree_base_by_landscape[_settings_game.game_creation.landscape]; int count = this->count = _tree_count_by_landscape[_settings_game.game_creation.landscape]; @@ -156,7 +160,8 @@ static const Widget _build_trees_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // BTW_CLOSE -{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 142, 0, 13, STR_PLANT_TREE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BTW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_DARK_GREEN, 11, 130, 0, 13, STR_PLANT_TREE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // BTW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_DARK_GREEN, 131, 142, 0, 13, 0x0, STR_SHADE_BUTTON}, // BTW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_DARK_GREEN, 0, 142, 14, 183, 0x0, STR_NULL}, // BTW_BACKGROUND { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 2, 35, 16, 61, 0x0, STR_PLANT_TREE_TOOLTIP}, // BTW_TYPE_11 { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 37, 70, 16, 61, 0x0, STR_PLANT_TREE_TOOLTIP}, // BTW_TYPE_12 @@ -178,7 +183,8 @@ static const NWidgetPart _nested_build_trees_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN, BTW_CLOSE), - NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BTW_CAPTION), SetMinimalSize(132, 14), SetDataTip(STR_PLANT_TREE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_DARK_GREEN, BTW_CAPTION), SetMinimalSize(120, 14), SetDataTip(STR_PLANT_TREE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN, BTW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BTW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 2), @@ -240,7 +246,7 @@ static const WindowDesc _build_trees_desc( WDP_AUTO, WDP_AUTO, 143, 184, 143, 184, WC_BUILD_TREES, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _build_trees_widgets, _nested_build_trees_widgets, lengthof(_nested_build_trees_widgets) ); Index: src/osk_gui.cpp =================================================================== --- src/osk_gui.cpp (revision 16883) +++ src/osk_gui.cpp (working copy) @@ -17,6 +17,7 @@ /** Widget numbers of the on-screen keyboard (OSK) window. */ enum OskWidgets { OSK_WIDGET_CAPTION, ///< Title bar. + OSK_WIDGET_SHADEBOX, ///< Shade window. OSK_WIDGET_TEXT_BACKGROUND, ///< Background around the edit box. OSK_WIDGET_TEXT, ///< Edit box. OSK_WIDGET_KEYS_BACKGROUND, ///< Background of the keys. @@ -117,6 +118,9 @@ SetDParam(0, this->caption); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + for (uint i = 0; i < OSK_KEYBOARD_ENTRIES; i++) { DrawCharCentered(_keyboard[shift][i], this->widget[OSK_WIDGET_LETTERS + i].left + 8, @@ -250,26 +254,27 @@ }; static const Widget _osk_widgets[] = { -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 0, 255, 0, 13, STR_QUERY_CAPTION, STR_NULL}, // OSK_WIDGET_CAPTION -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 255, 14, 29, 0x0, STR_NULL}, // OSK_WIDGET_TEXT_BACKGROUND -{ WWT_EDITBOX, RESIZE_NONE, COLOUR_GREY, 2, 253, 16, 27, 0x0, STR_NULL}, // OSK_WIDGET_TEXT +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 0, 244, 0, 13, STR_QUERY_CAPTION, STR_NULL}, // OSK_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 244, 255, 0, 13, 0x0, STR_SHADE_BUTTON}, // OSK_WIDGET_SHADEBOX +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 255, 14, 29, 0x0, STR_NULL}, // OSK_WIDGET_TEXT_BACKGROUND +{ WWT_EDITBOX, RESIZE_NONE, COLOUR_GREY, 2, 253, 16, 27, 0x0, STR_NULL}, // OSK_WIDGET_TEXT -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 255, 30, 139, 0x0, STR_NULL}, // OSK_WIDGET_KEYS_BACKGROUND +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 255, 30, 139, 0x0, STR_NULL}, // OSK_WIDGET_KEYS_BACKGROUND -{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 3, 108, 35, 46, STR_QUERY_CANCEL, STR_NULL}, // OSK_WIDGET_CANCEL -{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 111, 216, 35, 46, STR_QUERY_OK, STR_NULL}, // OSK_WIDGET_OK -{ WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 219, 252, 35, 46, SPR_OSK_BACKSPACE, STR_NULL}, // OSK_WIDGET_BACKSPACE +{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 3, 108, 35, 46, STR_QUERY_CANCEL, STR_NULL}, // OSK_WIDGET_CANCEL +{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 111, 216, 35, 46, STR_QUERY_OK, STR_NULL}, // OSK_WIDGET_OK +{ WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 219, 252, 35, 46, SPR_OSK_BACKSPACE, STR_NULL}, // OSK_WIDGET_BACKSPACE -{ WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 3, 27, 67, 82, SPR_OSK_SPECIAL, STR_NULL}, // OSK_WIDGET_SPECIAL -{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 3, 36, 85, 100, SPR_OSK_CAPS, STR_NULL}, // OSK_WIDGET_CAPS -{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 3, 27, 103, 118, SPR_OSK_SHIFT, STR_NULL}, // OSK_WIDGET_SHIFT +{ WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 3, 27, 67, 82, SPR_OSK_SPECIAL, STR_NULL}, // OSK_WIDGET_SPECIAL +{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 3, 36, 85, 100, SPR_OSK_CAPS, STR_NULL}, // OSK_WIDGET_CAPS +{ WWT_IMGBTN, RESIZE_NONE, COLOUR_GREY, 3, 27, 103, 118, SPR_OSK_SHIFT, STR_NULL}, // OSK_WIDGET_SHIFT -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 75, 189, 121, 136, STR_EMPTY, STR_NULL}, // OSK_WIDGET_SPACE +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 75, 189, 121, 136, STR_EMPTY, STR_NULL}, // OSK_WIDGET_SPACE -{ WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 219, 234, 121, 136, SPR_OSK_LEFT, STR_NULL}, // OSK_WIDGET_LEFT -{ WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 237, 252, 121, 136, SPR_OSK_RIGHT, STR_NULL}, // OSK_WIDGET_RIGHT +{ WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 219, 234, 121, 136, SPR_OSK_LEFT, STR_NULL}, // OSK_WIDGET_LEFT +{ WWT_PUSHIMGBTN, RESIZE_NONE, COLOUR_GREY, 237, 252, 121, 136, SPR_OSK_RIGHT, STR_NULL}, // OSK_WIDGET_RIGHT -{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 3, 18, 49, 64, 0x0, STR_NULL}, // OSK_WIDGET_NUMBERS_FIRST = OSK_WIDGET_LETTERS +{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 3, 18, 49, 64, 0x0, STR_NULL}, // OSK_WIDGET_NUMBERS_FIRST = OSK_WIDGET_LETTERS { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 21, 36, 49, 64, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 39, 54, 49, 64, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 57, 72, 49, 64, 0x0, STR_NULL}, @@ -282,9 +287,9 @@ { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 183, 198, 49, 64, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 201, 216, 49, 64, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 219, 234, 49, 64, 0x0, STR_NULL}, -{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 237, 252, 49, 64, 0x0, STR_NULL}, // OSK_WIDGET_NUMBERS_LAST +{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 237, 252, 49, 64, 0x0, STR_NULL}, // OSK_WIDGET_NUMBERS_LAST -{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 30, 45, 67, 82, 0x0, STR_NULL}, // OSK_WIDGET_QWERTY_FIRST +{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 30, 45, 67, 82, 0x0, STR_NULL}, // OSK_WIDGET_QWERTY_FIRST { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 48, 63, 67, 82, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 66, 81, 67, 82, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 84, 99, 67, 82, 0x0, STR_NULL}, @@ -295,9 +300,9 @@ { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 174, 189, 67, 82, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 192, 207, 67, 82, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 210, 225, 67, 82, 0x0, STR_NULL}, -{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 228, 243, 67, 82, 0x0, STR_NULL}, // OSK_WIDGET_QWERTY_LAST +{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 228, 243, 67, 82, 0x0, STR_NULL}, // OSK_WIDGET_QWERTY_LAST -{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 39, 54, 85, 100, 0x0, STR_NULL}, // OSK_WIDGET_ASDFG_FIRST +{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 39, 54, 85, 100, 0x0, STR_NULL}, // OSK_WIDGET_ASDFG_FIRST { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 57, 72, 85, 100, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 75, 90, 85, 100, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 93, 108, 85, 100, 0x0, STR_NULL}, @@ -308,9 +313,9 @@ { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 183, 198, 85, 100, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 201, 216, 85, 100, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 219, 234, 85, 100, 0x0, STR_NULL}, -{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 237, 252, 85, 100, 0x0, STR_NULL}, // OSK_WIDGET_ASDFG_LAST +{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 237, 252, 85, 100, 0x0, STR_NULL}, // OSK_WIDGET_ASDFG_LAST -{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 30, 45, 103, 118, 0x0, STR_NULL}, // OSK_WIDGET_ZXCVB_FIRST +{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 30, 45, 103, 118, 0x0, STR_NULL}, // OSK_WIDGET_ZXCVB_FIRST { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 48, 63, 103, 118, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 66, 81, 103, 118, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 84, 99, 103, 118, 0x0, STR_NULL}, @@ -321,7 +326,7 @@ { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 174, 189, 103, 118, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 192, 207, 103, 118, 0x0, STR_NULL}, { WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 210, 225, 103, 118, 0x0, STR_NULL}, -{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 228, 243, 103, 118, 0x0, STR_NULL}, // OSK_WIDGET_ZXCVB_LAST +{ WWT_PUSHBTN, RESIZE_NONE, COLOUR_GREY, 228, 243, 103, 118, 0x0, STR_NULL}, // OSK_WIDGET_ZXCVB_LAST { WIDGETS_END}, }; @@ -442,7 +447,10 @@ static const NWidgetPart _nested_osk_widgets[] = { - NWidget(WWT_CAPTION, COLOUR_GREY, OSK_WIDGET_CAPTION), SetDataTip(STR_QUERY_CAPTION, STR_NULL), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_CAPTION, COLOUR_GREY, OSK_WIDGET_CAPTION), SetDataTip(STR_QUERY_CAPTION, STR_NULL), + NWidget(WWT_SHADEBOX, COLOUR_GREY, OSK_WIDGET_SHADEBOX), + EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, OSK_WIDGET_TEXT_BACKGROUND), NWidget(WWT_EDITBOX, COLOUR_GREY, OSK_WIDGET_TEXT), SetMinimalSize(252, 12), SetPadding(2, 2, 2, 2), EndContainer(), @@ -459,7 +467,7 @@ static const WindowDesc _osk_desc( WDP_CENTER, WDP_CENTER, 256, 140, 256, 140, WC_OSK, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _osk_widgets, _nested_osk_widgets, lengthof(_nested_osk_widgets) ); Index: src/signs_gui.cpp =================================================================== --- src/signs_gui.cpp (revision 16883) +++ src/signs_gui.cpp (working copy) @@ -74,6 +74,7 @@ enum SignListWidgets { SLW_CLOSEBOX = 0, SLW_CAPTION, + SLW_SHADEBOX, SLW_STICKY, SLW_LIST, SLW_SCROLLBAR, @@ -103,6 +104,9 @@ SetDParam(0, this->vscroll.count); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* No signs? */ int y = this->widget[SLW_LIST].top + 2; // offset from top of widget if (this->vscroll.count == 0) { @@ -153,7 +157,8 @@ static const Widget _sign_list_widget[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 345, 0, 13, STR_SIGN_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 333, 0, 13, STR_SIGN_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_LR, COLOUR_GREY, 334, 345, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_STICKYBOX, RESIZE_LR, COLOUR_GREY, 346, 357, 0, 13, 0x0, STR_STICKY_BUTTON}, { WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 345, 14, 137, 0x0, STR_NULL}, { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 346, 357, 14, 125, 0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST}, @@ -165,6 +170,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, SLW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, SLW_CAPTION), SetDataTip(STR_SIGN_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, SLW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, SLW_STICKY), EndContainer(), NWidget(NWID_HORIZONTAL), @@ -179,7 +185,7 @@ static const WindowDesc _sign_list_desc( WDP_AUTO, WDP_AUTO, 358, 138, 358, 138, WC_SIGN_LIST, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON | WDF_RESIZABLE, _sign_list_widget, _nested_sign_list_widgets, lengthof(_nested_sign_list_widgets) ); @@ -206,6 +212,7 @@ enum QueryEditSignWidgets { QUERY_EDIT_SIGN_WIDGET_CLOSEBOX, QUERY_EDIT_SIGN_WIDGET_CAPTION, + QUERY_EDIT_SIGN_WIDGET_SHADEBOX, QUERY_EDIT_SIGN_WIDGET_PANEL, QUERY_EDIT_SIGN_WIDGET_TEXT, QUERY_EDIT_SIGN_WIDGET_OK, @@ -281,6 +288,10 @@ { SetDParam(0, this->caption); this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->DrawEditBox(QUERY_EDIT_SIGN_WIDGET_TEXT); } @@ -349,7 +360,8 @@ static const Widget _query_sign_edit_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // QUERY_EDIT_SIGN_WIDGET_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 259, 0, 13, STR_QUERY_CAPTION, STR_NULL }, // QUERY_EDIT_SIGN_WIDGET_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 247, 0, 13, STR_QUERY_CAPTION, STR_NULL }, // QUERY_EDIT_SIGN_WIDGET_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 248, 259, 0, 13, 0x0, STR_NULL }, // QUERY_EDIT_SIGN_WIDGET_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 259, 14, 29, STR_NULL, STR_NULL }, // QUERY_EDIT_SIGN_WIDGET_PANEL { WWT_EDITBOX, RESIZE_NONE, COLOUR_GREY, 2, 257, 16, 27, STR_SIGN_OSKTITLE, STR_NULL }, // QUERY_EDIT_SIGN_WIDGET_TEXT (Text field) { WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 60, 30, 41, STR_QUERY_OK, STR_NULL }, // QUERY_EDIT_SIGN_WIDGET_OK @@ -365,6 +377,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, QUERY_EDIT_SIGN_WIDGET_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, QUERY_EDIT_SIGN_WIDGET_CAPTION), SetDataTip(STR_QUERY_CAPTION, STR_NULL), + NWidget(WWT_SHADEBOX, COLOUR_GREY, QUERY_EDIT_SIGN_WIDGET_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, QUERY_EDIT_SIGN_WIDGET_PANEL), NWidget(WWT_EDITBOX, COLOUR_GREY, QUERY_EDIT_SIGN_WIDGET_TEXT), SetMinimalSize(256, 12), SetDataTip(STR_SIGN_OSKTITLE, STR_NULL), SetPadding(2, 2, 2, 2), @@ -382,7 +395,7 @@ static const WindowDesc _query_sign_edit_desc( 190, 170, 260, 42, 260, 42, WC_QUERY_STRING, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_CONSTRUCTION | WDF_SHADE_BUTTON, _query_sign_edit_widgets, _nested_query_sign_edit_widgets, lengthof(_nested_query_sign_edit_widgets) ); Index: src/graph_gui.cpp =================================================================== --- src/graph_gui.cpp (revision 16883) +++ src/graph_gui.cpp (working copy) @@ -34,6 +34,7 @@ enum GraphLegendWidgetNumbers { GLW_CLOSEBOX, GLW_CAPTION, + GLW_SHADEBOX, GLW_BACKGROUND, GLW_FIRST_COMPANY, @@ -61,6 +62,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + const Company *c; FOR_ALL_COMPANIES(c) { DrawCompanyIcon(c->index, 4, 18 + c->index * 12); @@ -109,7 +113,8 @@ static const Widget _graph_legend_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // GLW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 249, 0, 13, STR_GRAPH_KEY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // GLW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 237, 0, 13, STR_GRAPH_KEY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // GLW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 238, 249, 0, 13, 0x0, STR_SHADE_BUTTON}, // GLW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 249, 14, 195, 0x0, STR_NULL}, // GLW_BACKGROUND { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 2, 247, 16, 27, 0x0, STR_GRAPH_KEY_COMPANY_SELECTION}, // GLW_FIRST_COMPANY { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 2, 247, 28, 39, 0x0, STR_GRAPH_KEY_COMPANY_SELECTION}, @@ -133,6 +138,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, GLW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, GLW_CAPTION), SetDataTip(STR_GRAPH_KEY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, GLW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, GLW_BACKGROUND), NWidget(NWID_SPACER), SetMinimalSize(0, 2), @@ -145,9 +151,9 @@ }; static const WindowDesc _graph_legend_desc( - WDP_AUTO, WDP_AUTO, 250, 198, 250, 198, + WDP_AUTO, WDP_AUTO, 250, 196, 250, 196, WC_GRAPH_LEGEND, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _graph_legend_widgets, _nested_graph_legend_widgets, lengthof(_nested_graph_legend_widgets) ); @@ -165,6 +171,7 @@ BGW_CLOSEBOX, BGW_CAPTION, BGW_KEY_BUTTON, + BGW_SHADEBOX, BGW_BACKGROUND, }; @@ -412,6 +419,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + uint excluded_companies = _legend_excluded_companies; /* Exclude the companies which aren't valid */ @@ -488,8 +498,9 @@ static const Widget _operating_profit_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 525, 0, 13, STR_GRAPH_OPERATING_PROFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 526, 575, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 513, 0, 13, STR_GRAPH_OPERATING_PROFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 514, 563, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 564, 575, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 575, 14, 173, 0x0, STR_NULL}, { WIDGETS_END}, }; @@ -499,6 +510,7 @@ NWidget(WWT_CLOSEBOX, COLOUR_GREY, BGW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, BGW_CAPTION), SetDataTip(STR_GRAPH_OPERATING_PROFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, BGW_KEY_BUTTON), SetMinimalSize(50, 14), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), + NWidget(WWT_SHADEBOX, COLOUR_GREY, BGW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, BGW_BACKGROUND), SetMinimalSize(576, 160), EndContainer(), }; @@ -506,7 +518,7 @@ static const WindowDesc _operating_profit_desc( WDP_AUTO, WDP_AUTO, 576, 174, 576, 174, WC_OPERATING_PROFIT, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _operating_profit_widgets, _nested_operating_profit_widgets, lengthof(_nested_operating_profit_widgets) ); @@ -536,8 +548,9 @@ static const Widget _income_graph_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 525, 0, 13, STR_GRAPH_INCOME_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 526, 575, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 513, 0, 13, STR_GRAPH_INCOME_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 514, 563, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 564, 575, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 575, 14, 141, 0x0, STR_NULL}, { WIDGETS_END}, }; @@ -547,6 +560,7 @@ NWidget(WWT_CLOSEBOX, COLOUR_GREY, BGW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, BGW_CAPTION), SetDataTip(STR_GRAPH_INCOME_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, BGW_KEY_BUTTON), SetMinimalSize(50, 14), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), + NWidget(WWT_SHADEBOX, COLOUR_GREY, BGW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, BGW_BACKGROUND), SetMinimalSize(576, 128), EndContainer(), }; @@ -555,7 +569,7 @@ static const WindowDesc _income_graph_desc( WDP_AUTO, WDP_AUTO, 576, 142, 576, 142, WC_INCOME_GRAPH, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _income_graph_widgets, _nested_income_graph_widgets, lengthof(_nested_income_graph_widgets) ); @@ -583,8 +597,9 @@ static const Widget _delivered_cargo_graph_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 525, 0, 13, STR_GRAPH_CARGO_DELIVERED_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 526, 575, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 513, 0, 13, STR_GRAPH_CARGO_DELIVERED_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 514, 563, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 564, 575, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 575, 14, 141, 0x0, STR_NULL}, { WIDGETS_END}, }; @@ -594,6 +609,7 @@ NWidget(WWT_CLOSEBOX, COLOUR_GREY, BGW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, BGW_CAPTION), SetDataTip(STR_GRAPH_CARGO_DELIVERED_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, BGW_KEY_BUTTON), SetMinimalSize(50, 14), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), + NWidget(WWT_SHADEBOX, COLOUR_GREY, BGW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, BGW_BACKGROUND), SetMinimalSize(576, 128), EndContainer(), }; @@ -601,7 +617,7 @@ static const WindowDesc _delivered_cargo_graph_desc( WDP_AUTO, WDP_AUTO, 576, 142, 576, 142, WC_DELIVERED_CARGO, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _delivered_cargo_graph_widgets, _nested_delivered_cargo_graph_widgets, lengthof(_nested_delivered_cargo_graph_widgets) ); @@ -620,6 +636,7 @@ PHW_CAPTION, PHW_KEY, PHW_DETAILED_PERFORMANCE, + PHW_SHADEBOX, PHW_BACKGROUND, }; @@ -644,9 +661,10 @@ static const Widget _performance_history_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // PHW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 475, 0, 13, STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // PHW_CAPTION -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 526, 575, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, // PHW_KEY -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 476, 525, 0, 13, STR_PERFORMANCE_DETAIL_KEY, STR_SHOW_DETAILED_PERFORMANCE_RATINGS}, // PHW_DETAILED_PERFORMANCE +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 463, 0, 13, STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // PHW_CAPTION +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 514, 563, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, // PHW_KEY +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 464, 513, 0, 13, STR_PERFORMANCE_DETAIL_KEY, STR_SHOW_DETAILED_PERFORMANCE_RATINGS}, // PHW_DETAILED_PERFORMANCE +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 564, 575, 0, 13, 0x0, STR_SHADE_BUTTON}, // PHW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 575, 14, 237, 0x0, STR_NULL}, // PHW_BACKGROUND { WIDGETS_END}, }; @@ -657,6 +675,7 @@ NWidget(WWT_CAPTION, COLOUR_GREY, PHW_CAPTION), SetDataTip(STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, PHW_DETAILED_PERFORMANCE), SetMinimalSize(50, 14), SetDataTip(STR_PERFORMANCE_DETAIL_KEY, STR_SHOW_DETAILED_PERFORMANCE_RATINGS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, PHW_KEY), SetMinimalSize(50, 14), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), + NWidget(WWT_SHADEBOX, COLOUR_GREY, PHW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, PHW_BACKGROUND), SetMinimalSize(576, 224), EndContainer(), }; @@ -664,7 +683,7 @@ static const WindowDesc _performance_history_desc( WDP_AUTO, WDP_AUTO, 576, 238, 576, 238, WC_PERFORMANCE_HISTORY, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _performance_history_widgets, _nested_performance_history_widgets, lengthof(_nested_performance_history_widgets) ); @@ -692,8 +711,9 @@ static const Widget _company_value_graph_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 525, 0, 13, STR_GRAPH_COMPANY_VALUES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 526, 575, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 513, 0, 13, STR_GRAPH_COMPANY_VALUES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 514, 563, 0, 13, STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 564, 575, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 575, 14, 237, 0x0, STR_NULL}, { WIDGETS_END}, }; @@ -703,6 +723,7 @@ NWidget(WWT_CLOSEBOX, COLOUR_GREY, BGW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, BGW_CAPTION), SetDataTip(STR_GRAPH_COMPANY_VALUES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, BGW_KEY_BUTTON), SetMinimalSize(50, 14), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP), + NWidget(WWT_SHADEBOX, COLOUR_GREY, BGW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, BGW_BACKGROUND), SetMinimalSize(576, 224), EndContainer(), }; @@ -710,7 +731,7 @@ static const WindowDesc _company_value_graph_desc( WDP_AUTO, WDP_AUTO, 576, 238, 576, 238, WC_COMPANY_VALUE, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON, _company_value_graph_widgets, _nested_company_value_graph_widgets, lengthof(_nested_company_value_graph_widgets) ); @@ -727,6 +748,7 @@ enum CargoPaymentRatesWidgets { CPW_CLOSEBOX, CPW_CAPTION, + CPW_SHADEBOX, CPW_BACKGROUND, CPW_CARGO_FIRST, }; @@ -781,6 +803,9 @@ { this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->excluded_data = _legend_excluded_cargo; int x = 495; @@ -834,7 +859,8 @@ static const Widget _cargo_payment_rates_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 567, 0, 13, STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 555, 0, 13, STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 556, 567, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_PANEL, RESIZE_BOTTOM, COLOUR_GREY, 0, 567, 14, 45, 0x0, STR_NULL}, { WIDGETS_END}, }; @@ -843,6 +869,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, CPW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, CPW_CAPTION), SetDataTip(STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, CPW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, CPW_BACKGROUND), SetMinimalSize(568, 32), SetResize(0, 1), EndContainer(), }; @@ -850,7 +877,7 @@ static const WindowDesc _cargo_payment_rates_desc( WDP_AUTO, WDP_AUTO, 568, 46, 568, 46, WC_PAYMENT_RATES, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _cargo_payment_rates_widgets, _nested_cargo_payment_rates_widgets, lengthof(_nested_cargo_payment_rates_widgets) ); @@ -932,6 +959,9 @@ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + for (uint i = 0; i != this->companies.Length(); i++) { const Company *c = this->companies[i]; SetDParam(0, i + STR_ORDINAL_NUMBER_1ST); @@ -965,13 +995,15 @@ enum CompanyLeagueWidgets { CLW_CLOSEBOX, CLW_CAPTION, + CLW_SHADEBOX, CLW_STICKYBOX, CLW_BACKGROUND, }; static const Widget _company_league_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 387, 0, 13, STR_COMPANY_LEAGUE_TABLE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 375, 0, 13, STR_COMPANY_LEAGUE_TABLE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 376, 387, 0, 13, 0x0, STR_SHADE_BUTTON}, { WWT_STICKYBOX, RESIZE_NONE, COLOUR_GREY, 388, 399, 0, 13, STR_NULL, STR_STICKY_BUTTON}, { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 399, 14, 166, 0x0, STR_NULL}, { WIDGETS_END}, @@ -981,6 +1013,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, CLW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, CLW_CAPTION), SetDataTip(STR_COMPANY_LEAGUE_TABLE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, CLW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, CLW_STICKYBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, CLW_BACKGROUND), SetMinimalSize(400, 153), @@ -989,7 +1022,7 @@ static const WindowDesc _company_league_desc( WDP_AUTO, WDP_AUTO, 400, 167, 400, 167, WC_COMPANY_LEAGUE, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON, _company_league_widgets, _nested_company_league_widgets, lengthof(_nested_company_league_widgets) ); @@ -1006,6 +1039,7 @@ enum PerformanceRatingDetailsWidgets { PRW_CLOSEBOX, PRW_CAPTION, + PRW_SHADEBOX, PRW_BACKGROUND, PRW_SCORE_FIRST, @@ -1056,6 +1090,9 @@ /* Draw standard stuff */ this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + /* Check if the currently selected company is still active. */ if (company == INVALID_COMPANY || !Company::IsValidID(company)) { if (company != INVALID_COMPANY) { @@ -1284,7 +1321,8 @@ static const Widget _performance_rating_detail_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // PRW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 298, 0, 13, STR_PERFORMANCE_DETAIL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // PRW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 286, 0, 13, STR_PERFORMANCE_DETAIL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // PRW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 287, 298, 0, 13, 0x0, STR_SHADE_BUTTON}, // PRW_SHADEBOX { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 298, 14, 40, 0x0, STR_NULL}, // PRW_BACKGROUND { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 298, 41, 60, 0x0, STR_PERFORMANCE_DETAIL_VEHICLES_TIP}, // PRW_SCORE_FIRST @@ -1320,6 +1358,7 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, PRW_CLOSEBOX), NWidget(WWT_CAPTION, COLOUR_GREY, PRW_CAPTION), SetDataTip(STR_PERFORMANCE_DETAIL, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, PRW_SHADEBOX), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, PRW_BACKGROUND), NWidgetFunction(MakeCompanyButtonRows), SetPadding(0, 1, 1, 2), @@ -1330,7 +1369,7 @@ static const WindowDesc _performance_rating_detail_desc( WDP_AUTO, WDP_AUTO, 299, 241, 299, 241, WC_PERFORMANCE_DETAIL, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON, _performance_rating_detail_widgets, _nested_performance_rating_detail_widgets, lengthof(_nested_performance_rating_detail_widgets) ); Index: src/waypoint_gui.cpp =================================================================== --- src/waypoint_gui.cpp (revision 16883) +++ src/waypoint_gui.cpp (working copy) @@ -20,6 +20,7 @@ enum WaypointWindowWidgets { WAYPVW_CLOSEBOX = 0, WAYPVW_CAPTION, + WAYPVW_SHADEBOX, WAYPVW_STICKY, WAYPVW_VIEWPORTPANEL, WAYPVW_SPACER, @@ -59,6 +60,9 @@ SetDParam(0, this->wp->index); this->DrawWidgets(); + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + this->DrawViewport(); } @@ -102,7 +106,8 @@ static const Widget _waypoint_view_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, // WAYPVW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 247, 0, 13, STR_WAYPOINT_VIEWPORT, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // WAYPVW_CAPTION +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 236, 0, 13, STR_WAYPOINT_VIEWPORT, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, // WAYPVW_CAPTION +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 236, 247, 0, 13, 0x0, STR_SHADE_BUTTON}, // WAYPVW_SHADEBOX { WWT_STICKYBOX, RESIZE_NONE, COLOUR_GREY, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, // WAYPVW_STICKY { WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 259, 14, 105, 0x0, STR_NULL}, // WAYPVW_VIEWPORTPANEL { WWT_INSET, RESIZE_NONE, COLOUR_GREY, 2, 257, 16, 103, 0x0, STR_NULL}, // WAYPVW_SPACER @@ -115,7 +120,8 @@ static const NWidgetPart _nested_waypoint_view_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, WAYPVW_CLOSEBOX), - NWidget(WWT_CAPTION, COLOUR_GREY, WAYPVW_CAPTION), SetMinimalSize(237, 14), SetDataTip(STR_WAYPOINT_VIEWPORT, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_CAPTION, COLOUR_GREY, WAYPVW_CAPTION), SetMinimalSize(225, 14), SetDataTip(STR_WAYPOINT_VIEWPORT, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, WAYPVW_SHADEBOX), NWidget(WWT_STICKYBOX, COLOUR_GREY, WAYPVW_STICKY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WAYPVW_VIEWPORTPANEL), @@ -138,7 +144,7 @@ static const WindowDesc _waypoint_view_desc( WDP_AUTO, WDP_AUTO, 260, 118, 260, 118, WC_WAYPOINT_VIEW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_SHADE_BUTTON | WDF_STICKY_BUTTON, _waypoint_view_widgets, _nested_waypoint_view_widgets, lengthof(_nested_waypoint_view_widgets) ); Index: src/cheat_gui.cpp =================================================================== --- src/cheat_gui.cpp (revision 16883) +++ src/cheat_gui.cpp (working copy) @@ -128,8 +128,9 @@ static const Widget _cheat_widgets[] = { { WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_BLACK_CROSS, STR_TOOLTIP_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 399, 0, 13, STR_CHEATS, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 399, 14, 169, 0x0, STR_CHEATS_TIP}, +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 387, 0, 13, STR_CHEATS, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS}, +{ WWT_SHADEBOX, RESIZE_NONE, COLOUR_GREY, 388, 399, 0, 13, 0x0, STR_SHADE_BUTTON}, +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 399, 14, 169, 0x0, STR_CHEATS_TIP}, { WIDGETS_END}, }; @@ -137,8 +138,9 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY, 0), NWidget(WWT_CAPTION, COLOUR_GREY, 1), SetDataTip(STR_CHEATS, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_SHADEBOX, COLOUR_GREY, 2), EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, 2), SetMinimalSize(400, 156), SetDataTip(0x0, STR_CHEATS_TIP), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, 3), SetMinimalSize(400, 156), SetDataTip(0x0, STR_CHEATS_TIP), EndContainer(), }; struct CheatWindow : Window { @@ -152,6 +154,10 @@ virtual void OnPaint() { this->DrawWidgets(); + + /* Don't draw the rest of the window if window is shaded */ + if (this->flags4 & WF_SHADE) return; + DrawStringMultiLine(20, this->width - 20, 15, 45, STR_CHEATS_WARNING, TC_FROMSTRING, SA_CENTER); for (int i = 0, x = 0, y = 45; i != lengthof(_cheats_ui); i++) { @@ -246,7 +252,7 @@ static const WindowDesc _cheats_desc( 240, 22, 400, 170, 400, 170, WC_CHEATS, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_SHADE_BUTTON | WDF_UNCLICK_BUTTONS, _cheat_widgets, _nested_cheat_widgets, lengthof(_nested_cheat_widgets) );