(svn r27272) [1.5] -Backport from trunk:

- Fix: ScriptList::RemoveList failed to remove a list from itself [FS#6287] (r27258)
- Fix: Combined button+dropdown widgets in order and autoreplace GUI had incorrect hitbox when using GUI zoom [FS#6270] (r27255)
- Fix: When building a lock on DC_AUTO-removable water-based objects, the water class was always set to canal [FS#6264] (r27254)
- Fix: When crossing tram tracks with railroads, cost of extra roads was not being counted [FS#6282] (r27253)
This commit is contained in:
frosch
2015-05-08 17:32:57 +00:00
parent 24fdbabaf9
commit 622ea4406d
4 changed files with 19 additions and 14 deletions
+14 -8
View File
@@ -556,6 +556,8 @@ void ScriptList::Sort(SorterType sorter, bool ascending)
void ScriptList::AddList(ScriptList *list)
{
if (list == this) return;
ScriptListMap *list_items = &list->items;
for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) {
this->AddItem((*iter).first);
@@ -565,6 +567,8 @@ void ScriptList::AddList(ScriptList *list)
void ScriptList::SwapList(ScriptList *list)
{
if (list == this) return;
this->items.swap(list->items);
this->buckets.swap(list->buckets);
Swap(this->sorter, list->sorter);
@@ -694,9 +698,13 @@ void ScriptList::RemoveList(ScriptList *list)
{
this->modifications++;
ScriptListMap *list_items = &list->items;
for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) {
this->RemoveItem((*iter).first);
if (list == this) {
Clear();
} else {
ScriptListMap *list_items = &list->items;
for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) {
this->RemoveItem((*iter).first);
}
}
}
@@ -756,14 +764,12 @@ void ScriptList::KeepBottom(int32 count)
void ScriptList::KeepList(ScriptList *list)
{
if (list == this) return;
this->modifications++;
ScriptList tmp;
for (ScriptListMap::iterator iter = this->items.begin(); iter != this->items.end(); iter++) {
tmp.AddItem((*iter).first);
tmp.SetValue((*iter).first, (*iter).second);
}
tmp.AddList(this);
tmp.RemoveList(list);
this->RemoveList(&tmp);
}