summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/window.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/window.cpp b/src/window.cpp
index 9da50f6b2..71a776464 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -360,7 +360,16 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, bool double_click)
DeleteWindowById(WC_OSK, 0);
}
- focused_widget_changed = w->SetFocusedWidget(widget_index);
+ /* focused_widget_changed is 'now' only true if the window this widget
+ * is in gained focus. In that case it must remain true, also if the
+ * local widget focus did not change. As such it's the logical-or of
+ * both changed states.
+ *
+ * If this is not preserved, then the OSK window would be opened when
+ * a user has the edit box focused and then click on another window and
+ * then back again on the edit box (to type some text).
+ */
+ focused_widget_changed |= w->SetFocusedWidget(widget_index);
}
if (widget_type & WWB_PUSHBUTTON) {