--- a/src/group_gui.cpp Sat Oct 06 21:16:00 2007 +0000
+++ b/src/group_gui.cpp Mon Dec 03 23:39:38 2007 +0000
@@ -43,7 +43,7 @@
if (!(gl->l.flags & VL_REBUILD)) return;
list = MallocT<const Group*>(GetGroupArraySize());
- if (list == NULL) {
+ if (GetGroupArraySize() != 0 && list == NULL) {
error("Could not allocate memory for the group-sorting-list");
}
@@ -143,9 +143,9 @@
{ WWT_STICKYBOX, RESIZE_LR, 14, 448, 459, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, RESIZE_NONE, 14, 0, 200, 14, 25, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 0, 200, 26, 38, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 0, 200, 39, 52, 0x0, STR_NULL},
+{ WWT_PANEL, RESIZE_NONE, 14, 0, 200, 39, 51, 0x0, STR_NULL},
{ WWT_MATRIX, RESIZE_BOTTOM, 14, 0, 188, 52, 168, 0x701, STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
-{ WWT_SCROLLBAR, RESIZE_BOTTOM, 14, 189, 200, 26, 168, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{ WWT_SCROLLBAR, RESIZE_BOTTOM, 14, 189, 200, 52, 168, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 201, 281, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP},
{ WWT_PANEL, RESIZE_NONE, 14, 282, 435, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 436, 447, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
@@ -266,7 +266,7 @@
*/
static void UpdateGroupActionDropdown(Window *w, GroupID gid, bool refresh = true)
{
- if (refresh && !IsWindowWidgetLowered(w, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) return;
+ if (refresh && !w->IsWidgetLowered(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) return;
static StringID action_str[] = {
STR_REPLACE_VEHICLES,
@@ -328,8 +328,21 @@
SetVScrollCount(w, gl->l.list_length);
SetVScroll2Count(w, gv->l.list_length);
+ /* The drop down menu is out, *but* it may not be used, retract it. */
+ if (gv->l.list_length == 0 && w->IsWidgetLowered(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) {
+ w->RaiseWidget(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN);
+ Window **w2;
+ FOR_ALL_WINDOWS(w2) {
+ if (w->window_class == WP(*w2, dropdown_d).parent_wnd_class &&
+ w->window_number == WP(*w2, dropdown_d).parent_wnd_num) {
+ DeleteWindow(*w2);
+ break;
+ }
+ }
+ }
+
/* Disable all lists management button when the list is empty */
- SetWindowWidgetsDisabledState(w, gv->l.list_length == 0 || _local_player != owner,
+ w->SetWidgetsDisabledState(gv->l.list_length == 0 || _local_player != owner,
GRP_WIDGET_STOP_ALL,
GRP_WIDGET_START_ALL,
GRP_WIDGET_MANAGE_VEHICLES,
@@ -337,7 +350,7 @@
WIDGET_LIST_END);
/* Disable the group specific function when we select the default group or all vehicles */
- SetWindowWidgetsDisabledState(w, IsDefaultGroupID(gv->group_sel) || IsAllGroupID(gv->group_sel) || _local_player != owner,
+ w->SetWidgetsDisabledState(IsDefaultGroupID(gv->group_sel) || IsAllGroupID(gv->group_sel) || _local_player != owner,
GRP_WIDGET_DELETE_GROUP,
GRP_WIDGET_RENAME_GROUP,
GRP_WIDGET_REPLACE_PROTECTION,
@@ -349,7 +362,7 @@
* verify, whether you are the owner of the vehicle,
* so it doesn't have to be disabled
*/
- SetWindowWidgetsDisabledState(w, _local_player != owner,
+ w->SetWidgetsDisabledState(_local_player != owner,
GRP_WIDGET_CREATE_GROUP,
GRP_WIDGET_AVAILABLE_VEHICLES,
WIDGET_LIST_END);
@@ -433,11 +446,11 @@
break;
default: NOT_REACHED(); break;
}
- DrawString(10, y1, str_all_veh, IsAllGroupID(gv->group_sel) ? 12 : 16);
+ DrawString(10, y1, str_all_veh, IsAllGroupID(gv->group_sel) ? TC_WHITE : TC_BLACK);
y1 += 13;
- DrawString(10, y1, str_no_group_veh, IsDefaultGroupID(gv->group_sel) ? 12 : 16);
+ DrawString(10, y1, str_no_group_veh, IsDefaultGroupID(gv->group_sel) ? TC_WHITE : TC_BLACK);
max = min(w->vscroll.pos + w->vscroll.cap, gl->l.list_length);
for (i = w->vscroll.pos ; i < max ; ++i) {
@@ -449,16 +462,16 @@
/* draw the selected group in white, else we draw it in black */
SetDParam(0, g->index);
- DrawString(10, y1, STR_GROUP_NAME, (gv->group_sel == g->index) ? 12 : 16);
+ DrawString(10, y1, STR_GROUP_NAME, (gv->group_sel == g->index) ? TC_WHITE : TC_BLACK);
/* draw the number of vehicles of the group */
SetDParam(0, g->num_vehicle);
- DrawStringRightAligned(187, y1 + 1, STR_GROUP_TINY_NUM, (gv->group_sel == g->index) ? 12 : 16);
+ DrawStringRightAligned(187, y1 + 1, STR_GROUP_TINY_NUM, (gv->group_sel == g->index) ? TC_WHITE : TC_BLACK);
}
/* Draw Matrix Vehicle according to the vehicle list built before */
- DrawString(285, 15, _vehicle_sort_listing[gv->l.sort_type], 0x10);
- DoDrawString(gv->l.flags & VL_DESC ? DOWNARROW : UPARROW, 269, 15, 0x10);
+ DrawString(285, 15, _vehicle_sort_listing[gv->l.sort_type], TC_BLACK);
+ DoDrawString(gv->l.flags & VL_DESC ? DOWNARROW : UPARROW, 269, 15, TC_BLACK);
max = min(w->vscroll2.pos + w->vscroll2.cap, gv->l.list_length);
for (i = w->vscroll2.pos ; i < max ; ++i) {
@@ -470,17 +483,17 @@
DrawVehicleProfitButton(v, x, y2 + 13);
SetDParam(0, v->unitnumber);
- DrawString(x, y2 + 2, v->IsInDepot() ? STR_021F : (v->age > v->max_age - 366 ? STR_00E3 : STR_00E2), 0);
+ DrawString(x, y2 + 2, v->IsInDepot() ? STR_021F : (v->age > v->max_age - 366 ? STR_00E3 : STR_00E2), TC_FROMSTRING);
if (w->resize.step_height == PLY_WND_PRC__SIZE_OF_ROW_BIG2) DrawSmallOrderList(v, x + 138, y2);
SetDParam(0, v->profit_this_year);
SetDParam(1, v->profit_last_year);
- DrawString(x + 19, y2 + w->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 0);
+ DrawString(x + 19, y2 + w->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, TC_FROMSTRING);
if (IsValidGroupID(v->group_id)) {
SetDParam(0, v->group_id);
- DrawString(x + 19, y2, STR_GROUP_TINY_NAME, 16);
+ DrawString(x + 19, y2, STR_GROUP_TINY_NAME, TC_BLACK);
}
y2 += w->resize.step_height;
@@ -554,7 +567,7 @@
gv->vehicle_sel = v->index;
if (v->IsValid()) {
- SetObjectToPlaceWnd(v->GetImage(DIR_W), GetVehiclePalette(v), 4, w);
+ SetObjectToPlaceWnd(v->GetImage(DIR_W), GetVehiclePalette(v), VHM_DRAG, w);
}
SetWindowDirty(w);