summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2015-11-20 09:25:27 +0000
committeralberth <alberth@openttd.org>2015-11-20 09:25:27 +0000
commit3ccfc954f3ff99af58732b69a185ea77d5c03060 (patch)
treeb9de8d398491bcb23871f5b9202fef636aebb218
parentee39fdef8ed6f104ba31960dc062fc53ca9575b7 (diff)
downloadopenttd-3ccfc954f3ff99af58732b69a185ea77d5c03060.tar.xz
(svn r27450) -Feature[FS#6391](r27446): Lower the sell-chain button in the train depot GUI while dragging a vehicle over it. (Eearslya)
-rw-r--r--src/depot_gui.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp
index 1045f15bd..4aff4700b 100644
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -229,7 +229,7 @@ struct DepotWindow : Window {
VehicleID vehicle_over; ///< Rail vehicle over which another one is dragged, \c INVALID_VEHICLE if none.
VehicleType type;
bool generate_list;
- bool sell_hovered; ///< A vehicle is being dragged/hovered over the sell button.
+ int hovered_widget; ///< Index of the widget being hovered during drag/drop. -1 if no drag is in progress.
VehicleList vehicle_list;
VehicleList wagon_list;
uint unitnumber_digits;
@@ -244,7 +244,7 @@ struct DepotWindow : Window {
this->sel = INVALID_VEHICLE;
this->vehicle_over = INVALID_VEHICLE;
this->generate_list = true;
- this->sell_hovered = false;
+ this->hovered_widget = -1;
this->type = type;
this->num_columns = 1; // for non-trains this gets set in FinishInitNested()
this->unitnumber_digits = 2;
@@ -870,21 +870,26 @@ struct DepotWindow : Window {
this->vehicle_over = INVALID_VEHICLE;
this->SetWidgetDirty(WID_D_MATRIX);
- if (this->sell_hovered) {
- this->SetWidgetLoweredState(WID_D_SELL, false);
- this->SetWidgetDirty(WID_D_SELL);
- this->sell_hovered = false;
+ if (this->hovered_widget != -1) {
+ this->SetWidgetLoweredState(this->hovered_widget, false);
+ this->SetWidgetDirty(this->hovered_widget);
+ this->hovered_widget = -1;
}
}
virtual void OnMouseDrag(Point pt, int widget)
{
if (this->sel == INVALID_VEHICLE) return;
- bool is_sell_widget = widget == WID_D_SELL;
- if (is_sell_widget != this->sell_hovered) {
- this->sell_hovered = is_sell_widget;
- this->SetWidgetLoweredState(WID_D_SELL, is_sell_widget);
- this->SetWidgetDirty(WID_D_SELL);
+ if (widget != this->hovered_widget) {
+ if (this->hovered_widget == WID_D_SELL || this->hovered_widget == WID_D_SELL_CHAIN) {
+ this->SetWidgetLoweredState(this->hovered_widget, false);
+ this->SetWidgetDirty(this->hovered_widget);
+ }
+ this->hovered_widget = widget;
+ if (this->hovered_widget == WID_D_SELL || this->hovered_widget == WID_D_SELL_CHAIN) {
+ this->SetWidgetLoweredState(this->hovered_widget, true);
+ this->SetWidgetDirty(this->hovered_widget);
+ }
}
if (this->type != VEH_TRAIN) return;
@@ -975,7 +980,7 @@ struct DepotWindow : Window {
this->SetDirty();
break;
}
- this->sell_hovered = false;
+ this->hovered_widget = -1;
_cursor.vehchain = false;
}