diff src/misc_gui.cpp @ 13008:3abc6651764b draft

(svn r17502) -Codechange [FS#3184]: Extend QueryStringBaseWindow to support windows with nested widgets (by Terkhen with a few tweaks).
author alberth <alberth@openttd.org>
date Fri, 11 Sep 2009 18:52:56 +0000
parents 560c26f15688
children c02d5e082def
line wrap: on
line diff
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -1182,23 +1182,35 @@
 
 void QueryString::DrawEditBox(Window *w, int wid)
 {
-	const Widget *wi = &w->widget[wid];
+	int left;
+	int right;
+	int top;
+	int bottom;
+	if (w->widget == NULL) {
+		const NWidgetCore *wi = w->nested_array[wid];
 
-	assert((wi->type & WWT_MASK) == WWT_EDITBOX);
+		assert((wi->type & WWT_MASK) == WWT_EDITBOX);
 
-	GfxFillRect(wi->left + 1, wi->top + 1, wi->right - 1, wi->bottom - 1, 215);
+		left   = wi->pos_x;
+		right  = wi->pos_x + wi->current_x - 1;
+		top    = wi->pos_y;
+		bottom = wi->pos_y + wi->current_y - 1;
+	} else {
+		const Widget *wi = &w->widget[wid];
 
-	DrawPixelInfo dpi;
-	int delta;
+		assert((wi->type & WWT_MASK) == WWT_EDITBOX);
+
+		left   = wi->left;
+		right  = wi->right;
+		top    = wi->top;
+		bottom = wi->bottom;
+	}
+
+	GfxFillRect(left + 1, top + 1, right - 1, bottom - 1, 215);
 
 	/* Limit the drawing of the string inside the widget boundaries */
-	if (!FillDrawPixelInfo(&dpi,
-			wi->left + 4,
-			wi->top + 1,
-			wi->right - wi->left - 4,
-			wi->bottom - wi->top - 1)) {
-		return;
-	}
+	DrawPixelInfo dpi;
+	if (!FillDrawPixelInfo(&dpi, left + WD_FRAMETEXT_LEFT, top + WD_FRAMERECT_TOP, right - left - WD_FRAMETEXT_RIGHT, bottom - top - WD_FRAMERECT_BOTTOM)) return;
 
 	DrawPixelInfo *old_dpi = _cur_dpi;
 	_cur_dpi = &dpi;
@@ -1206,9 +1218,7 @@
 	/* We will take the current widget length as maximum width, with a small
 	 * space reserved at the end for the caret to show */
 	const Textbuf *tb = &this->text;
-
-	delta = (wi->right - wi->left) - tb->width - 10;
-	if (delta > 0) delta = 0;
+	int delta = min(0, (right - left) - tb->width - 10);
 
 	if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs;