summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2009-08-08 22:26:45 +0000
committeralberth <alberth@openttd.org>2009-08-08 22:26:45 +0000
commit153cfa8c70378c0013694d65ce0c39fcb7587fb8 (patch)
tree3e54021c18040d31dfb630e24bc0246358292e42
parent5d0ae8ad47371cd8789d2f7bf905958a2273a8dd (diff)
downloadopenttd-153cfa8c70378c0013694d65ce0c39fcb7587fb8.tar.xz
(svn r17126) -Fix [FS#3096]: Initialize graph data from the constructor of the derived class.
-rw-r--r--src/graph_gui.cpp32
1 files changed, 23 insertions, 9 deletions
diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp
index 6df83105a..1ea5272e2 100644
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -398,9 +398,6 @@ protected:
InvalidateWindow(WC_GRAPH_LEGEND, 0);
this->num_vert_lines = 24;
- /* Initialise the dataset */
- this->OnTick();
-
this->graph_location.left = left;
this->graph_location.right = left + GRAPH_X_POSITION_BEGINNING + this->num_vert_lines * GRAPH_X_POSITION_SEPARATION - 1;
@@ -408,6 +405,14 @@ protected:
this->graph_location.bottom = top + height - 1;
}
+ void InitializeWindow(const WindowDesc *desc)
+ {
+ this->FindWindowPlacementAndResize(desc);
+
+ /* Initialise the dataset */
+ this->UpdateStatistics(true);
+ }
+
public:
virtual void OnPaint()
{
@@ -429,6 +434,15 @@ public:
virtual void OnTick()
{
+ this->UpdateStatistics(false);
+ }
+
+ /**
+ * Update the statistics.
+ * @param initialize Initialize the data structure.
+ */
+ void UpdateStatistics(bool initialize)
+ {
uint excluded_companies = _legend_excluded_companies;
/* Exclude the companies which aren't valid */
@@ -449,7 +463,7 @@ public:
mo += 12;
}
- if (this->excluded_data == excluded_companies && this->num_on_x_axis == nums &&
+ if (!initialize && this->excluded_data == excluded_companies && this->num_on_x_axis == nums &&
this->year == yr && this->month == mo) {
/* There's no reason to get new stats */
return;
@@ -486,7 +500,7 @@ struct OperatingProfitGraphWindow : BaseGraphWindow {
OperatingProfitGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
BaseGraphWindow(desc, window_number, 2, 18, 136, true, STR_JUST_CURRCOMPACT)
{
- this->FindWindowPlacementAndResize(desc);
+ this->InitializeWindow(desc);
}
virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
@@ -534,7 +548,7 @@ struct IncomeGraphWindow : BaseGraphWindow {
IncomeGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
BaseGraphWindow(desc, window_number, 2, 18, 104, false, STR_JUST_CURRCOMPACT)
{
- this->FindWindowPlacementAndResize(desc);
+ this->InitializeWindow(desc);
}
virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
@@ -581,7 +595,7 @@ struct DeliveredCargoGraphWindow : BaseGraphWindow {
DeliveredCargoGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
BaseGraphWindow(desc, window_number, 2, 18, 104, false, STR_JUST_COMMA)
{
- this->FindWindowPlacementAndResize(desc);
+ this->InitializeWindow(desc);
}
virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
@@ -636,7 +650,7 @@ struct PerformanceHistoryGraphWindow : BaseGraphWindow {
PerformanceHistoryGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
BaseGraphWindow(desc, window_number, 2, 18, 200, false, STR_JUST_COMMA)
{
- this->FindWindowPlacementAndResize(desc);
+ this->InitializeWindow(desc);
}
virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
@@ -690,7 +704,7 @@ struct CompanyValueGraphWindow : BaseGraphWindow {
CompanyValueGraphWindow(const WindowDesc *desc, WindowNumber window_number) :
BaseGraphWindow(desc, window_number, 2, 18, 200, false, STR_JUST_CURRCOMPACT)
{
- this->FindWindowPlacementAndResize(desc);
+ this->InitializeWindow(desc);
}
virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)