changeset 9209:638c2e249af7 draft

(svn r13075) -Codechange: Allow any value for a dropdown item instead of just positive.
author peter1138 <peter1138@openttd.org>
date Tue, 13 May 2008 21:11:38 +0000
parents aa4576e5111a
children 59df6166f3a1
files src/widgets/dropdown.cpp
diffstat 1 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/widgets/dropdown.cpp
+++ b/src/widgets/dropdown.cpp
@@ -87,9 +87,9 @@
 		DeleteDropDownList(this->list);
 	}
 
-	int GetDropDownItem()
+	bool GetDropDownItem(int &value)
 	{
-		if (GetWidgetFromPos(this, _cursor.pos.x - this->left, _cursor.pos.y - this->top) < 0) return -1;
+		if (GetWidgetFromPos(this, _cursor.pos.x - this->left, _cursor.pos.y - this->top) < 0) return false;
 
 		int y     = _cursor.pos.y - this->top - 2;
 		int width = this->widget[0].right - 3;
@@ -105,14 +105,15 @@
 			int item_height = item->Height(width);
 
 			if (y < item_height) {
-				if (item->masked || item->String() == STR_NULL) return -1;
-				return item->result;
+				if (item->masked || item->String() == STR_NULL) return false;
+				value = item->result;
+				return true;
 			}
 
 			y -= item_height;
 		}
 
-		return -1;
+		return false;
 	}
 
 	virtual void OnPaint()
@@ -162,8 +163,8 @@
 	virtual void OnClick(Point pt, int widget)
 	{
 		if (widget != 0) return;
-		int item = GetDropDownItem();
-		if (item >= 0) {
+		int item;
+		if (this->GetDropDownItem(item)) {
 			this->click_delay = 4;
 			this->selected_index = item;
 			this->SetDirty();
@@ -197,11 +198,11 @@
 		}
 
 		if (this->drag_mode) {
-			int item = GetDropDownItem();
+			int item;
 
 			if (!_left_button_clicked) {
 				this->drag_mode = false;
-				if (item < 0) return;
+				if (!this->GetDropDownItem(item)) return;
 				this->click_delay = 2;
 			} else {
 				if (_cursor.pos.y <= this->top + 2) {
@@ -214,7 +215,7 @@
 					return;
 				}
 
-				if (item < 0) return;
+				if (!this->GetDropDownItem(item)) return;
 			}
 
 			this->selected_index = item;