src/group_gui.cpp
changeset 7156 68de47bdcb80
parent 7139 4ae3ab180d05
child 7163 09e65bfbc08b
--- a/src/group_gui.cpp	Sun May 20 16:17:03 2007 +0000
+++ b/src/group_gui.cpp	Sun May 20 18:34:47 2007 +0000
@@ -258,6 +258,30 @@
 }
 
 /**
+ * Update/redraw the group action dropdown
+ * @param w   the window the dropdown belongs to
+ * @param gid the currently selected group in the window
+ */
+static void UpdateGroupActionDropdown(Window *w, GroupID gid, bool refresh = true)
+{
+	if (refresh && !IsWindowWidgetLowered(w, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) return;
+
+	static StringID action_str[] = {
+		STR_REPLACE_VEHICLES,
+		STR_SEND_FOR_SERVICING,
+		STR_SEND_TRAIN_TO_DEPOT,
+		STR_NULL,
+		STR_NULL,
+		INVALID_STRING_ID
+	};
+
+	action_str[3] = IsDefaultGroupID(gid) ? INVALID_STRING_ID : STR_GROUP_ADD_SHARED_VEHICLE;
+	action_str[4] = IsDefaultGroupID(gid) ? INVALID_STRING_ID : STR_GROUP_REMOVE_ALL_VEHICLES;
+
+	ShowDropDownMenu(w, action_str, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, 0);
+}
+
+/**
  * bitmask for w->window_number
  * 0-7   PlayerID (owner)
  * 11-15 vehicle type
@@ -464,6 +488,7 @@
 					if (!IsDefaultGroupID(gv->group_sel)) {
 						gv->group_sel = DEFAULT_GROUP;
 						gv->l.flags |= VL_REBUILD;
+						UpdateGroupActionDropdown(w, gv->group_sel);
 						SetWindowDirty(w);
 					}
 					break;
@@ -480,6 +505,7 @@
 					gv->group_sel = gl->sort_list[id_g]->index;;
 
 					gv->l.flags |= VL_REBUILD;
+					UpdateGroupActionDropdown(w, gv->group_sel);
 					SetWindowDirty(w);
 					break;
 				}
@@ -518,8 +544,9 @@
 
 				case GRP_WIDGET_CREATE_GROUP: // Create a new group
 					if (!CmdFailed(DoCommandP(0, gv->vehicle_type, 0, NULL, CMD_CREATE_GROUP | CMD_MSG(STR_GROUP_CAN_T_CREATE)))) {
+						gl->l.flags |= VL_REBUILD;
+						UpdateGroupActionDropdown(w, gv->group_sel);
 						SetWindowDirty(w);
-						gl->l.flags |= VL_REBUILD;
 					}
 					break;
 
@@ -528,6 +555,7 @@
 						gv->group_sel = DEFAULT_GROUP;
 						gv->l.flags |= VL_REBUILD;
 						gl->l.flags |= VL_REBUILD;
+						UpdateGroupActionDropdown(w, gv->group_sel);
 						SetWindowDirty(w);
 					}
 					break;
@@ -548,19 +576,7 @@
 
 				case GRP_WIDGET_MANAGE_VEHICLES:
 				case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN:  {
-					static StringID action_str[] = {
-						STR_REPLACE_VEHICLES,
-						STR_SEND_FOR_SERVICING,
-						STR_SEND_TRAIN_TO_DEPOT,
-						STR_NULL,
-						STR_NULL,
-						INVALID_STRING_ID
-					};
-
-					action_str[3] = IsDefaultGroupID(gv->group_sel) ? INVALID_STRING_ID : STR_GROUP_ADD_SHARED_VEHICLE;
-					action_str[4] = IsDefaultGroupID(gv->group_sel) ? INVALID_STRING_ID : STR_GROUP_REMOVE_ALL_VEHICLES;
-
-					ShowDropDownMenu(w, action_str, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, 0);
+					UpdateGroupActionDropdown(w, gv->group_sel, false);
 					break;
 				}