Changeset - r12998:eae10f6a2586
[Not reviewed]
master
0 3 0
alberth - 15 years ago 2009-09-11 18:52:56
alberth@openttd.org
(svn r17502) -Codechange [FS#3184]: Extend QueryStringBaseWindow to support windows with nested widgets (by Terkhen with a few tweaks).
3 files changed with 38 insertions and 16 deletions:
0 comments (0 inline, 0 general)
src/misc_gui.cpp
Show inline comments
 
@@ -1182,23 +1182,35 @@ void QueryString::HandleEditBox(Window *
 

	
 
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 @@ void QueryString::DrawEditBox(Window *w,
 
	/* 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;
 

	
src/osk_gui.cpp
Show inline comments
 
@@ -75,7 +75,13 @@ struct OskWindow : public Window {
 
		this->parent = parent;
 
		assert(parent != NULL);
 

	
 
		this->caption = (parent->widget[button].data != STR_NULL) ? parent->widget[button].data : parent->caption;
 
		if (parent->widget != NULL) {
 
			this->caption = (parent->widget[button].data != STR_NULL) ? parent->widget[button].data : parent->caption;
 
		}
 
		if (parent->nested_array != NULL) {
 
			assert(parent->nested_array[button] != NULL);
 
			this->caption = (parent->nested_array[button]->widget_data != STR_NULL) ? parent->nested_array[button]->widget_data : parent->caption;
 
		}
 

	
 
		this->qs         = parent;
 
		this->text_btn   = button;
src/querystring_gui.h
Show inline comments
 
@@ -62,6 +62,12 @@ struct QueryStringBaseWindow : public Wi
 
	char *orig_str_buf;
 
	const uint16 edit_str_size; ///< maximum length of string (in bytes), including terminating '\0'
 

	
 
	QueryStringBaseWindow(uint16 size) : Window(), edit_str_size(size)
 
	{
 
		assert(size != 0);
 
		this->edit_str_buf = CallocT<char>(size);
 
	}
 

	
 
	QueryStringBaseWindow(uint16 size, const WindowDesc *desc, WindowNumber window_number = 0) : Window(desc, window_number), edit_str_size(size)
 
	{
 
		assert(size != 0);
0 comments (0 inline, 0 general)