summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2014-02-27 21:53:14 +0000
committerfrosch <frosch@openttd.org>2014-02-27 21:53:14 +0000
commit20970da24ab8d68760db1eb53331857a939e3666 (patch)
tree8d705704b8d238e1298da6ef6e96d8e3d11f99a0
parent34cd77dcf5fdf0eb92075b9bc7f839e905a34052 (diff)
downloadopenttd-20970da24ab8d68760db1eb53331857a939e3666.tar.xz
(svn r26382) -Fix [FS#5932] (r25372): All goal commands invalidated the goal list of company 0.
-rw-r--r--src/goal.cpp31
1 files changed, 26 insertions, 5 deletions
diff --git a/src/goal.cpp b/src/goal.cpp
index 1bc87ad82..e2436745c 100644
--- a/src/goal.cpp
+++ b/src/goal.cpp
@@ -92,7 +92,11 @@ CommandCost CmdCreateGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
g->progress = NULL;
g->completed = false;
- InvalidateWindowData(WC_GOALS_LIST, 0);
+ if (g->company == INVALID_COMPANY) {
+ InvalidateWindowClassesData(WC_GOALS_LIST);
+ } else {
+ InvalidateWindowData(WC_GOALS_LIST, g->company);
+ }
if (Goal::GetNumItems() == 1) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
_new_goal_id = g->index;
@@ -117,9 +121,14 @@ CommandCost CmdRemoveGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
if (flags & DC_EXEC) {
Goal *g = Goal::Get(p1);
+ CompanyID c = g->company;
delete g;
- InvalidateWindowData(WC_GOALS_LIST, 0);
+ if (c == INVALID_COMPANY) {
+ InvalidateWindowClassesData(WC_GOALS_LIST);
+ } else {
+ InvalidateWindowData(WC_GOALS_LIST, c);
+ }
if (Goal::GetNumItems() == 0) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
}
@@ -146,7 +155,11 @@ CommandCost CmdSetGoalText(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
free(g->text);
g->text = strdup(text);
- InvalidateWindowData(WC_GOALS_LIST, 0);
+ if (g->company == INVALID_COMPANY) {
+ InvalidateWindowClassesData(WC_GOALS_LIST);
+ } else {
+ InvalidateWindowData(WC_GOALS_LIST, g->company);
+ }
}
return CommandCost();
@@ -175,7 +188,11 @@ CommandCost CmdSetGoalProgress(TileIndex tile, DoCommandFlag flags, uint32 p1, u
g->progress = strdup(text);
}
- InvalidateWindowData(WC_GOALS_LIST, 0);
+ if (g->company == INVALID_COMPANY) {
+ InvalidateWindowClassesData(WC_GOALS_LIST);
+ } else {
+ InvalidateWindowData(WC_GOALS_LIST, g->company);
+ }
}
return CommandCost();
@@ -199,7 +216,11 @@ CommandCost CmdSetGoalCompleted(TileIndex tile, DoCommandFlag flags, uint32 p1,
Goal *g = Goal::Get(p1);
g->completed = p2 == 1;
- InvalidateWindowData(WC_GOALS_LIST, 0);
+ if (g->company == INVALID_COMPANY) {
+ InvalidateWindowClassesData(WC_GOALS_LIST);
+ } else {
+ InvalidateWindowData(WC_GOALS_LIST, g->company);
+ }
}
return CommandCost();