changeset 17543:2576cb1b3f90 draft

(svn r22307) -Fix: When drawing the town authority window, check whether the availability of the actions changed, and force a complete redraw in that case.
author frosch <frosch@openttd.org>
date Sat, 09 Apr 2011 21:15:24 +0000
parents 822ea37e4c3a
children 09be4c66385a
files src/town_gui.cpp
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/town_gui.cpp
+++ b/src/town_gui.cpp
@@ -73,6 +73,7 @@
 	Town *town;    ///< Town being displayed.
 	int sel_index; ///< Currently selected town action, \c 0 to \c TACT_COUNT-1, \c -1 means no action selected.
 	Scrollbar *vscroll;
+	uint displayed_actions_on_previous_painting; ///< Actions that were available on the previous call to OnPaint()
 
 	/**
 	 * Get the position of the Nth set bit.
@@ -96,7 +97,7 @@
 	}
 
 public:
-	TownAuthorityWindow(const WindowDesc *desc, WindowNumber window_number) : Window(), sel_index(-1)
+	TownAuthorityWindow(const WindowDesc *desc, WindowNumber window_number) : Window(), sel_index(-1), displayed_actions_on_previous_painting(0)
 	{
 		this->town = Town::Get(window_number);
 		this->InitNested(desc, window_number);
@@ -108,6 +109,8 @@
 	{
 		int numact;
 		uint buttons = GetMaskOfTownActions(&numact, _local_company, this->town);
+		if (buttons != displayed_actions_on_previous_painting) this->SetDirty();
+		displayed_actions_on_previous_painting = buttons;
 
 		this->vscroll->SetCount(numact + 1);