diff options
author | frosch <frosch@openttd.org> | 2014-02-27 21:53:14 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2014-02-27 21:53:14 +0000 |
commit | 20970da24ab8d68760db1eb53331857a939e3666 (patch) | |
tree | 8d705704b8d238e1298da6ef6e96d8e3d11f99a0 | |
parent | 34cd77dcf5fdf0eb92075b9bc7f839e905a34052 (diff) | |
download | openttd-20970da24ab8d68760db1eb53331857a939e3666.tar.xz |
(svn r26382) -Fix [FS#5932] (r25372): All goal commands invalidated the goal list of company 0.
-rw-r--r-- | src/goal.cpp | 31 |
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(); |