summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-12-31 18:11:03 +0000
committerrubidium <rubidium@openttd.org>2009-12-31 18:11:03 +0000
commitde3cff9e1a4ad7982c6de512fd043dd6d3acf52c (patch)
tree8bc23aa2f81dad3b971e6dd2284ce6796f183f68
parent739aea3e1afb150100c06362d098b6e19ef2342e (diff)
downloadopenttd-de3cff9e1a4ad7982c6de512fd043dd6d3acf52c.tar.xz
(svn r18675) -Add [FS#3256]: function to remove focus from all widgets in a window
-rw-r--r--src/window.cpp12
-rw-r--r--src/window_gui.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/window.cpp b/src/window.cpp
index ea3b0bb98..82d286d5a 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -133,6 +133,18 @@ bool EditBoxInGlobalFocus()
}
/**
+ * Makes no widget on this window have focus. The function however doesn't change which window has focus.
+ */
+void Window::UnfocusFocusedWidget()
+{
+ if (this->nested_focus != NULL) {
+ /* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */
+ this->nested_focus->SetDirty(this);
+ this->nested_focus = NULL;
+ }
+}
+
+/**
* 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.
diff --git a/src/window_gui.h b/src/window_gui.h
index f4a13e921..5d58fac16 100644
--- a/src/window_gui.h
+++ b/src/window_gui.h
@@ -519,6 +519,7 @@ public:
return this->GetWidget<NWidgetCore>(widget_index)->IsLowered();
}
+ void UnfocusFocusedWidget();
bool SetFocusedWidget(byte widget_index);
void HandleButtonClick(byte widget);