Changeset - r13000:0de5fabb6b7b
[Not reviewed]
master
0 2 0
alberth - 15 years ago 2009-09-11 19:12:05
alberth@openttd.org
(svn r17504) -Codechange: un-inlining SetFocusedWidget() as it is not often used.
2 files changed with 38 insertions and 36 deletions:
0 comments (0 inline, 0 general)
src/window.cpp
Show inline comments
 
@@ -140,6 +140,42 @@ bool EditBoxInGlobalFocus()
 
}
 

	
 
/**
 
 * Set focus within this window to the given widget. The function however doesn't change which window has focus.
 
 * @param widget_index Index of the widget in the window to set the focus to.
 
 * @return Focus has changed.
 
 */
 
bool Window::SetFocusedWidget(byte widget_index)
 
{
 
	if (this->widget != NULL) {
 
		/* Do nothing if widget_index is already focused, or if it wasn't a valid widget. */
 
		if (widget_index >= this->widget_count || this->widget + widget_index == this->focused_widget) return false;
 

	
 
		if (this->focused_widget != NULL) {
 
			/* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */
 
			this->InvalidateWidget(this->focused_widget - this->widget);
 
		}
 
		this->focused_widget = &this->widget[widget_index];
 
		return true;
 
	}
 

	
 
	if (this->nested_array != NULL) {
 
		/* Do nothing if widget_index is already focused, or if it wasn't a valid widget. */
 
		if (widget_index >= this->nested_array_size) return false;
 

	
 
		assert(this->nested_array[widget_index] != NULL); // Setting focus to a non-existing widget is a bad idea.
 
		if (this->nested_focus != NULL) {
 
			if (this->nested_array[widget_index] == this->nested_focus) return false;
 

	
 
			/* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */
 
			this->nested_focus->Invalidate(this);
 
		}
 
		this->nested_focus = this->nested_array[widget_index];
 
		return true;
 
	}
 
	NOT_REACHED();
 
}
 

	
 
/**
 
 * Sets the enabled/disabled status of a list of widgets.
 
 * By default, widgets are enabled.
 
 * On certain conditions, they have to be disabled.
src/window_gui.h
Show inline comments
 
@@ -497,42 +497,6 @@ public:
 
	}
 

	
 
	/**
 
	 * Set focus within this window to the given widget. The function however doesn't change which window has focus.
 
	 * @param widget_index Index of the widget in the window to set the focus to.
 
	 * @return Focus has changed.
 
	 */
 
	inline bool SetFocusedWidget(byte widget_index)
 
	{
 
		if (this->widget != NULL) {
 
			/* Do nothing if widget_index is already focused, or if it wasn't a valid widget. */
 
			if (widget_index >= this->widget_count || this->widget + widget_index == this->focused_widget) return false;
 

	
 
			if (this->focused_widget != NULL) {
 
				/* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */
 
				this->InvalidateWidget(this->focused_widget - this->widget);
 
			}
 
			this->focused_widget = &this->widget[widget_index];
 
			return true;
 
		}
 

	
 
		if (this->nested_array != NULL) {
 
			/* Do nothing if widget_index is already focused, or if it wasn't a valid widget. */
 
			if (widget_index >= this->nested_array_size) return false;
 

	
 
			assert(this->nested_array[widget_index] != NULL); // Setting focus to a non-existing widget is a bad idea.
 
			if (this->nested_focus != NULL) {
 
				if (this->nested_array[widget_index] == this->nested_focus) return false;
 

	
 
				/* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */
 
				this->nested_focus->Invalidate(this);
 
			}
 
			this->nested_focus = this->nested_array[widget_index];
 
			return true;
 
		}
 
		NOT_REACHED();
 
	}
 

	
 
	/**
 
	 * Check if given widget is focused within this window
 
	 * @param widget_index : index of the widget in the window to check
 
	 * @return true if given widget is the focused window in this window
 
@@ -646,6 +610,8 @@ public:
 
		return this->widget[widget_index].right - this->widget[widget_index].left + 1;
 
	}
 

	
 
	bool SetFocusedWidget(byte widget_index);
 

	
 
	void HandleButtonClick(byte widget);
 
	const Widget *GetWidgetOfType(WidgetType widget_type) const;
 

	
0 comments (0 inline, 0 general)