summaryrefslogtreecommitdiff
path: root/src/autoreplace_gui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/autoreplace_gui.cpp')
-rw-r--r--src/autoreplace_gui.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp
index b159376a0..dc1f5ed73 100644
--- a/src/autoreplace_gui.cpp
+++ b/src/autoreplace_gui.cpp
@@ -164,10 +164,21 @@ class ReplaceVehicleWindow : public Window {
this->engines[1].Clear();
this->sel_engine[1] = INVALID_ENGINE;
} else {
+ if (this->reset_sel_engine && this->sel_engine[0] != INVALID_ENGINE) {
+ /* Select the current replacement for sel_engine[0]. */
+ const Company *c = Company::Get(_local_company);
+ this->sel_engine[1] = EngineReplacementForCompany(c, this->sel_engine[0], this->sel_group);
+ }
+ /* Regenerate the list on the right. Note: This resets sel_engine[1] to INVALID_ENGINE, if it is no longer available. */
this->GenerateReplaceVehList(false);
this->vscroll[1]->SetCount(this->engines[1].Length());
- if (this->reset_sel_engine && this->sel_engine[1] == INVALID_ENGINE && this->engines[1].Length() != 0) {
- this->sel_engine[1] = this->engines[1][0];
+ if (this->reset_sel_engine && this->sel_engine[1] != INVALID_ENGINE) {
+ int position = 0;
+ for (EngineID *it = this->engines[1].Begin(); it != this->engines[1].End(); ++it) {
+ if (*it == this->sel_engine[1]) break;
+ ++position;
+ }
+ this->vscroll[1]->ScrollTowards(position);
}
}
}