diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index e3a687ce0a..bdc42718c9 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -1805,7 +1805,7 @@ struct NetworkClientListPopupWindow : Window { } DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, Center(y, GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL)), action.name, colour); - y += GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL) + y += GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL); } } @@ -1831,7 +1831,7 @@ struct NetworkClientListPopupWindow : Window { { int index = (pt.y - WD_FRAMERECT_TOP) / GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL); - if (index >= 0 && index < (int)this->actions.Length()) { + if (index >= 0 && index < (int)this->actions.size()) { const NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(this->client_id); if (ci != NULL) this->actions[index].proc(ci); } diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 5b552be2c3..ad963555f6 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -793,7 +793,7 @@ struct BuildRailToolbarWindow : Window { if (this->last_user_action_remove) BuildRailClick_Remove(this); } - void OnPlacePresize(Point pt, TileIndex tile) override + void OnPlacePresize(Point pt, TileIndex tile_from) override { TileIndex tile_to = tile_from; diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 713847b9ce..8645292087 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -301,14 +301,14 @@ struct GameOptionsWindow : Window { case WID_GO_BUTTON_SIZE_DROPDOWN: // Dropdowns for size of all GUI elements and fonts case WID_GO_TEXT_SIZE_DROPDOWN: - list = new DropDownList(); + list = DropDownList(); *selected_index = (widget == WID_GO_BUTTON_SIZE_DROPDOWN) ? _settings_client.gui.min_button : _freetype.medium.size; for (uint i = MIN_BUTTON_SIZE; i <= MAX_BUTTON_SIZE; i++) { DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false); item->SetParam(0, i); - *list->Append() = item; + list.emplace_back(item); } break; diff --git a/src/smallmap_gui.h b/src/smallmap_gui.h index f6c6f98705..363e65625d 100644 --- a/src/smallmap_gui.h +++ b/src/smallmap_gui.h @@ -191,6 +191,7 @@ public: void OnRealtimeTick(uint delta_ms) override; void OnScroll(Point delta) override; void OnMouseOver(Point pt, int widget) override; + void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override; }; #endif /* SMALLMAP_GUI_H */ diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 15bfc1b166..289394bd60 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -187,7 +187,7 @@ public: static void PopupMainToolbMenu(Window *w, int widget, DropDownList &&list, int def) { if (!_settings_client.gui.vertical_toolbar) { - ShowDropDownList(w, std::move(list), def, widget, 0, true, list->Length() <= 1); + ShowDropDownList(w, std::move(list), def, widget, 0, true, list.size() <= 1); } else { Rect wi_rect; NWidgetCore *nwi = w->GetWidget(widget); @@ -195,7 +195,7 @@ static void PopupMainToolbMenu(Window *w, int widget, DropDownList &&list, int d wi_rect.right = nwi->pos_x + nwi->current_x; wi_rect.top = nwi->pos_y; wi_rect.bottom = nwi->pos_y + nwi->current_y; - ShowDropDownListAt(w, std::move(list), def, widget, wi_rect, nwi->colour, true, list->Length() <= 1); + ShowDropDownListAt(w, std::move(list), def, widget, wi_rect, nwi->colour, true, list.size() <= 1); } if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); } @@ -895,15 +895,15 @@ static CallBackFunction ToolbarZoomOutClick(Window *w) static CallBackFunction ToolbarBuildRailClick(Window *w) { - DropDownList *list = GetRailTypeDropDownList(); + DropDownList list = GetRailTypeDropDownList(); if (_settings_client.gui.compact_vertical_toolbar) { const Company *c = Company::Get(_local_company); - *list->Append() = new DropDownListStringItem(STR_ROAD_MENU_ROAD_CONSTRUCTION, RAILTYPE_END + ROADTYPE_ROAD, false); - *list->Append() = new DropDownListStringItem(STR_ROAD_MENU_TRAM_CONSTRUCTION, RAILTYPE_END + ROADTYPE_TRAM, !HasBit(c->avail_roadtypes, ROADTYPE_TRAM)); - *list->Append() = new DropDownListStringItem(STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION, RAILTYPE_END + WID_TN_WATER, false); - *list->Append() = new DropDownListStringItem(STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION, RAILTYPE_END + WID_TN_AIR, false); + list.emplace_back(new DropDownListStringItem(STR_ROAD_MENU_ROAD_CONSTRUCTION, RAILTYPE_END + ROADTYPE_ROAD, false)); + list.emplace_back(new DropDownListStringItem(STR_ROAD_MENU_TRAM_CONSTRUCTION, RAILTYPE_END + ROADTYPE_TRAM, !HasBit(c->avail_roadtypes, ROADTYPE_TRAM))); + list.emplace_back(new DropDownListStringItem(STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION, RAILTYPE_END + WID_TN_WATER, false)); + list.emplace_back(new DropDownListStringItem(STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION, RAILTYPE_END + WID_TN_AIR, false)); } - ShowDropDownList(w, list, _last_built_railtype, WID_TN_RAILS, 140, true); + ShowDropDownList(w, std::move(list), _last_built_railtype, WID_TN_RAILS, 140, true); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); return CBF_NONE; } @@ -940,7 +940,7 @@ static CallBackFunction MenuClickBuildRail(int index) static CallBackFunction ToolbarBuildRoadClick(Window *w) { DropDownList list = GetRoadTypeDropDownList(RTTB_ROAD); - ShowDropDownList(w, list, _last_built_roadtype, WID_TN_ROADS, 140, true, list->size() <= 1); + ShowDropDownList(w, std::move(list), _last_built_roadtype, WID_TN_ROADS, 140, true, list.size() <= 1); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); return CBF_NONE; } @@ -2932,8 +2932,7 @@ static Hotkey maintoolbar_hotkeys[] = { }; HotkeyList MainToolbarWindow::hotkeys("maintoolbar", maintoolbar_hotkeys); -static NWidgetBase *MakeMainToolbar(int *biggest_index) -{ +namespace tbs { /** Sprites to use for the different toolbar buttons */ static const SpriteID toolbar_button_sprites[] = { SPR_IMG_PAUSE, // WID_TN_PAUSE @@ -2968,7 +2967,11 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index) SPR_IMG_QUERY, // WID_TN_HELP SPR_IMG_SWITCH_TOOLBAR, // WID_TN_SWITCH_BAR }; +}; +using namespace tbs; +static NWidgetBase *MakeMainToolbar(int *biggest_index) +{ NWidgetMainToolbarContainer *hor = new NWidgetMainToolbarContainer(); for (uint i = 0; i <= WID_TN_SWITCH_BAR; i++) { switch (i) { @@ -2981,7 +2984,7 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index) hor->Add(new NWidgetSpacer(0, 0)); break; } - hor->Add(new NWidgetLeaf(i == WID_TN_SAVE ? WWT_IMGBTN_2 : WWT_IMGBTN, COLOUR_GREY, i, _toolbar_button_sprites[i], STR_TOOLBAR_TOOLTIP_PAUSE_GAME + i)); + hor->Add(new NWidgetLeaf(i == WID_TN_SAVE ? WWT_IMGBTN_2 : WWT_IMGBTN, COLOUR_GREY, i, toolbar_button_sprites[i], STR_TOOLBAR_TOOLTIP_PAUSE_GAME + i)); } hor->Add(new NWidgetSpacer(0, 0)); @@ -3009,7 +3012,7 @@ static NWidgetBase *MakeVerticalLeftToolbar(int *biggest_index) { NWidgetVerticalToolbarContainer *tb = new NWidgetVerticalToolbarContainer(0); for (uint i = 0; i <= WID_TN_SWITCH_BAR; i++) { - tb->Add(new NWidgetLeaf(i == WID_TN_SAVE ? WWT_IMGBTN_2 : WWT_IMGBTN, COLOUR_GREY, i, _toolbar_button_sprites[i], STR_TOOLBAR_TOOLTIP_PAUSE_GAME + i)); + tb->Add(new NWidgetLeaf(i == WID_TN_SAVE ? WWT_IMGBTN_2 : WWT_IMGBTN, COLOUR_GREY, i, toolbar_button_sprites[i], STR_TOOLBAR_TOOLTIP_PAUSE_GAME + i)); } tb->Add(new NWidgetLeaf(WWT_TEXTBTN, COLOUR_GREY, WID_TN_CTRL, STR_TABLET_CTRL, STR_TABLET_CTRL_TOOLTIP)); @@ -3036,7 +3039,7 @@ static NWidgetBase *MakeVerticalRightToolbar(int *biggest_index) { NWidgetVerticalToolbarContainer *tb = new NWidgetVerticalToolbarContainer(1); for (uint i = 0; i <= WID_TN_SWITCH_BAR; i++) { - tb->Add(new NWidgetLeaf(i == WID_TN_SAVE ? WWT_IMGBTN_2 : WWT_IMGBTN, COLOUR_GREY, i, _toolbar_button_sprites[i], STR_TOOLBAR_TOOLTIP_PAUSE_GAME + i)); + tb->Add(new NWidgetLeaf(i == WID_TN_SAVE ? WWT_IMGBTN_2 : WWT_IMGBTN, COLOUR_GREY, i, toolbar_button_sprites[i], STR_TOOLBAR_TOOLTIP_PAUSE_GAME + i)); } tb->Add(new NWidgetLeaf(WWT_TEXTBTN, COLOUR_GREY, WID_TN_CTRL, STR_TABLET_CTRL, STR_TABLET_CTRL_TOOLTIP)); diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index d3192f8458..11a7981d49 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -390,12 +390,12 @@ struct DropdownWindow : Window { if (!this->left_button_scrolling && _left_button_down && this->left_button_scroll_pos != -1 && - abs(this->left_button_scroll_pos - _cursor.pos.y) > (int)(*list)[0]->Height(this->width)) { + abs(this->left_button_scroll_pos - _cursor.pos.y) > (int)list[0]->Height(this->width)) { this->left_button_scrolling = true; this->mouse_capture_widget = WID_DM_ITEMS; } if (this->left_button_scrolling) { - int height = (*list)[0]->Height(this->width); + int height = list[0]->Height(this->width); int pos = (this->left_button_scroll_pos - _cursor.pos.y) / height; if (pos != 0) { this->scrolling = pos; diff --git a/src/window.cpp b/src/window.cpp index 161a86bc36..7e194eaca0 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -839,8 +839,6 @@ static void DispatchRightClickEvent(Window *w, int x, int y) Point pt = { x, y }; - Point pt = { x, y }; - /* No widget to handle, or the window is not interested in it. */ if (wid->index >= 0) { if (w->OnRightClick(pt, wid->index)) return; @@ -869,8 +867,6 @@ static void DispatchHoverEvent(Window *w, int x, int y) Point pt = { x, y }; - Point pt = { x, y }; - /* Show the tooltip if there is any */ if (!w->OnTooltip(pt, wid->index, TCC_HOVER) && wid->tool_tip != 0) { GuiShowTooltips(w, wid->tool_tip); @@ -1419,6 +1415,7 @@ static uint GetWindowZPriority(WindowClass wc) case WC_STATUS_BAR: ++z_priority; + FALLTHROUGH; case WC_NEWS_WINDOW: ++z_priority; @@ -3141,7 +3138,7 @@ static void MouseLoop(MouseClick click, int mousewheel) int x = _cursor.pos.x; int y = _cursor.pos.y; Window *w = FindWindowFromPt(x, y); - if (w == NULL) return; + if (w == nullptr) return; ViewPort *vp = IsPtInWindowViewport(w, x, y); /* Don't allow any action in a viewport if either in menu or when having a modal progress window */ @@ -3164,13 +3161,7 @@ static void MouseLoop(MouseClick click, int mousewheel) bool scrollwheel_scrolling = _settings_client.gui.scrollwheel_scrolling == 1 && (_cursor.v_wheel != 0 || _cursor.h_wheel != 0); if (click == MC_NONE && mousewheel == 0 && !scrollwheel_scrolling) return; - int x = _cursor.pos.x; - int y = _cursor.pos.y; - Window *w = FindWindowFromPt(x, y); - if (w == nullptr) return; - - if (click != MC_HOVER && !MaybeBringWindowToFront(w)) return; - ViewPort *vp = IsPtInWindowViewport(w, x, y); + if (click != MC_HOVER && click != MC_NONE && click != MC_LEFT_UP && !MaybeBringWindowToFront(w)) return; /* Don't allow any action in a viewport if either in menu or when having a modal progress window */ if (vp != nullptr && (_game_mode == GM_MENU || HasModalProgress())) return;