src/group_gui.cpp
changeset 8810 64adff2796e4
parent 8809 07a86b81ea37
child 8811 cf734ff178bf
equal deleted inserted replaced
8809:07a86b81ea37 8810:64adff2796e4
   261 /**
   261 /**
   262  * Update/redraw the group action dropdown
   262  * Update/redraw the group action dropdown
   263  * @param w   the window the dropdown belongs to
   263  * @param w   the window the dropdown belongs to
   264  * @param gid the currently selected group in the window
   264  * @param gid the currently selected group in the window
   265  */
   265  */
   266 static void UpdateGroupActionDropdown(Window *w, GroupID gid, bool refresh = true)
   266 static void ShowGroupActionDropdown(Window *w, GroupID gid)
   267 {
   267 {
   268 	if (refresh && !w->IsWidgetLowered(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) return;
       
   269 
       
   270 	static StringID action_str[] = {
   268 	static StringID action_str[] = {
   271 		STR_REPLACE_VEHICLES,
   269 		STR_REPLACE_VEHICLES,
   272 		STR_SEND_FOR_SERVICING,
   270 		STR_SEND_FOR_SERVICING,
   273 		STR_SEND_TRAIN_TO_DEPOT,
   271 		STR_SEND_TRAIN_TO_DEPOT,
   274 		STR_NULL,
   272 		STR_NULL,
   297 
   295 
   298 	switch(e->event) {
   296 	switch(e->event) {
   299 		case WE_INVALIDATE_DATA:
   297 		case WE_INVALIDATE_DATA:
   300 			gv->l.flags |= VL_REBUILD;
   298 			gv->l.flags |= VL_REBUILD;
   301 			gl->l.flags |= VL_REBUILD;
   299 			gl->l.flags |= VL_REBUILD;
   302 			if (!IsValidGroupID(gv->group_sel)) gv->group_sel = ALL_GROUP;
   300 			if (!IsValidGroupID(gv->group_sel)) {
   303 			UpdateGroupActionDropdown(w, gv->group_sel);
   301 				gv->group_sel = ALL_GROUP;
       
   302 				HideDropDownMenu(w);
       
   303 			}
   304 			SetWindowDirty(w);
   304 			SetWindowDirty(w);
   305 			break;
   305 			break;
   306 
   306 
   307 		case WE_CREATE:
   307 		case WE_CREATE:
   308 			CreateVehicleGroupWindow(w);
   308 			CreateVehicleGroupWindow(w);
   511 
   511 
   512 				case GRP_WIDGET_ALL_VEHICLES: // All vehicles button
   512 				case GRP_WIDGET_ALL_VEHICLES: // All vehicles button
   513 					if (!IsAllGroupID(gv->group_sel)) {
   513 					if (!IsAllGroupID(gv->group_sel)) {
   514 						gv->group_sel = ALL_GROUP;
   514 						gv->group_sel = ALL_GROUP;
   515 						gv->l.flags |= VL_REBUILD;
   515 						gv->l.flags |= VL_REBUILD;
   516 						UpdateGroupActionDropdown(w, gv->group_sel);
       
   517 						SetWindowDirty(w);
   516 						SetWindowDirty(w);
   518 					}
   517 					}
   519 					break;
   518 					break;
   520 
   519 
   521 				case GRP_WIDGET_DEFAULT_VEHICLES: // Ungrouped vehicles button
   520 				case GRP_WIDGET_DEFAULT_VEHICLES: // Ungrouped vehicles button
   522 					if (!IsDefaultGroupID(gv->group_sel)) {
   521 					if (!IsDefaultGroupID(gv->group_sel)) {
   523 						gv->group_sel = DEFAULT_GROUP;
   522 						gv->group_sel = DEFAULT_GROUP;
   524 						gv->l.flags |= VL_REBUILD;
   523 						gv->l.flags |= VL_REBUILD;
   525 						UpdateGroupActionDropdown(w, gv->group_sel);
       
   526 						SetWindowDirty(w);
   524 						SetWindowDirty(w);
   527 					}
   525 					}
   528 					break;
   526 					break;
   529 
   527 
   530 				case GRP_WIDGET_LIST_GROUP: { // Matrix Group
   528 				case GRP_WIDGET_LIST_GROUP: { // Matrix Group
   537 					if (id_g >= gl->l.list_length) return;
   535 					if (id_g >= gl->l.list_length) return;
   538 
   536 
   539 					gv->group_sel = gl->sort_list[id_g]->index;;
   537 					gv->group_sel = gl->sort_list[id_g]->index;;
   540 
   538 
   541 					gv->l.flags |= VL_REBUILD;
   539 					gv->l.flags |= VL_REBUILD;
   542 					UpdateGroupActionDropdown(w, gv->group_sel);
       
   543 					SetWindowDirty(w);
   540 					SetWindowDirty(w);
   544 					break;
   541 					break;
   545 				}
   542 				}
   546 
   543 
   547 				case GRP_WIDGET_LIST_VEHICLE: { // Matrix Vehicle
   544 				case GRP_WIDGET_LIST_VEHICLE: { // Matrix Vehicle
   592 					ShowBuildVehicleWindow(0, gv->vehicle_type);
   589 					ShowBuildVehicleWindow(0, gv->vehicle_type);
   593 					break;
   590 					break;
   594 
   591 
   595 				case GRP_WIDGET_MANAGE_VEHICLES:
   592 				case GRP_WIDGET_MANAGE_VEHICLES:
   596 				case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN:  {
   593 				case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN:  {
   597 					UpdateGroupActionDropdown(w, gv->group_sel, false);
   594 					ShowGroupActionDropdown(w, gv->group_sel);
   598 					break;
   595 					break;
   599 				}
   596 				}
   600 
   597 
   601 
   598 
   602 				case GRP_WIDGET_START_ALL:
   599 				case GRP_WIDGET_START_ALL: