mirror of https://github.com/OpenTTD/OpenTTD
Feature: Control + click on the vehicle details button in the vehicle view window opens the vehicle group window, then selects and scrolls to the vehicle's group.
parent
a363933d08
commit
cc1d72c3a3
|
@ -1046,18 +1046,31 @@ static WindowDesc _train_group_desc(
|
||||||
* Show the group window for the given company and vehicle type.
|
* Show the group window for the given company and vehicle type.
|
||||||
* @param company The company to show the window for.
|
* @param company The company to show the window for.
|
||||||
* @param vehicle_type The type of vehicle to show it for.
|
* @param vehicle_type The type of vehicle to show it for.
|
||||||
|
* @param group The group to be selected. Defaults to INVALID_GROUP.
|
||||||
|
* @param need_existing_window Whether the existing window is needed. Defaults to false.
|
||||||
*/
|
*/
|
||||||
void ShowCompanyGroup(CompanyID company, VehicleType vehicle_type)
|
void ShowCompanyGroup(CompanyID company, VehicleType vehicle_type, GroupID group = INVALID_GROUP, bool need_existing_window = false)
|
||||||
{
|
{
|
||||||
if (!Company::IsValidID(company)) return;
|
if (!Company::IsValidID(company)) return;
|
||||||
|
|
||||||
WindowNumber num = VehicleListIdentifier(VL_GROUP_LIST, vehicle_type, company).Pack();
|
const WindowNumber num = VehicleListIdentifier(VL_GROUP_LIST, vehicle_type, company).Pack();
|
||||||
|
VehicleGroupWindow *w;
|
||||||
if (vehicle_type == VEH_TRAIN) {
|
if (vehicle_type == VEH_TRAIN) {
|
||||||
AllocateWindowDescFront<VehicleGroupWindow>(&_train_group_desc, num);
|
w = AllocateWindowDescFront<VehicleGroupWindow>(&_train_group_desc, num, need_existing_window);
|
||||||
} else {
|
} else {
|
||||||
_other_group_desc.cls = GetWindowClassForVehicleType(vehicle_type);
|
_other_group_desc.cls = GetWindowClassForVehicleType(vehicle_type);
|
||||||
AllocateWindowDescFront<VehicleGroupWindow>(&_other_group_desc, num);
|
w = AllocateWindowDescFront<VehicleGroupWindow>(&_other_group_desc, num, need_existing_window);
|
||||||
}
|
}
|
||||||
|
if (w != nullptr) w->SelectGroup(group);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the group window for the given vehicle.
|
||||||
|
* @param v The vehicle to show the window for.
|
||||||
|
*/
|
||||||
|
void ShowCompanyGroupForVehicle(const Vehicle *v)
|
||||||
|
{
|
||||||
|
ShowCompanyGroup(v->owner, v->type, v->group_id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
#include "company_type.h"
|
#include "company_type.h"
|
||||||
#include "vehicle_type.h"
|
#include "vehicle_type.h"
|
||||||
|
|
||||||
void ShowCompanyGroup(CompanyID company, VehicleType veh);
|
void ShowCompanyGroup(CompanyID company, VehicleType veh, GroupID group = INVALID_GROUP, bool need_existing_window = false);
|
||||||
|
void ShowCompanyGroupForVehicle(const Vehicle *v);
|
||||||
void DeleteGroupHighlightOfVehicle(const Vehicle *v);
|
void DeleteGroupHighlightOfVehicle(const Vehicle *v);
|
||||||
|
|
||||||
#endif /* GROUP_GUI_H */
|
#endif /* GROUP_GUI_H */
|
||||||
|
|
|
@ -2698,7 +2698,11 @@ public:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WID_VV_SHOW_DETAILS: // show details
|
case WID_VV_SHOW_DETAILS: // show details
|
||||||
ShowVehicleDetailsWindow(v);
|
if (_ctrl_pressed) {
|
||||||
|
ShowCompanyGroupForVehicle(v);
|
||||||
|
} else {
|
||||||
|
ShowVehicleDetailsWindow(v);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case WID_VV_CLONE: // clone vehicle
|
case WID_VV_CLONE: // clone vehicle
|
||||||
/* Suppress the vehicle GUI when share-cloning.
|
/* Suppress the vehicle GUI when share-cloning.
|
||||||
|
|
Loading…
Reference in New Issue