mirror of https://github.com/OpenTTD/OpenTTD
(svn r17504) -Codechange: un-inlining SetFocusedWidget() as it is not often used.
parent
e1ae20a307
commit
afe190a216
|
@ -139,6 +139,42 @@ bool EditBoxInGlobalFocus()
|
||||||
return _focused_window->focused_widget != NULL && _focused_window->focused_widget->type == WWT_EDITBOX;
|
return _focused_window->focused_widget != NULL && _focused_window->focused_widget->type == WWT_EDITBOX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
* Sets the enabled/disabled status of a list of widgets.
|
||||||
* By default, widgets are enabled.
|
* By default, widgets are enabled.
|
||||||
|
|
|
@ -496,42 +496,6 @@ public:
|
||||||
return HasBit(this->widget[widget_index].display_flags, WIDG_HIDDEN);
|
return HasBit(this->widget[widget_index].display_flags, WIDG_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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
|
* Check if given widget is focused within this window
|
||||||
* @param widget_index : index of the widget in the window to check
|
* @param widget_index : index of the widget in the window to check
|
||||||
|
@ -646,6 +610,8 @@ public:
|
||||||
return this->widget[widget_index].right - this->widget[widget_index].left + 1;
|
return this->widget[widget_index].right - this->widget[widget_index].left + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SetFocusedWidget(byte widget_index);
|
||||||
|
|
||||||
void HandleButtonClick(byte widget);
|
void HandleButtonClick(byte widget);
|
||||||
const Widget *GetWidgetOfType(WidgetType widget_type) const;
|
const Widget *GetWidgetOfType(WidgetType widget_type) const;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue