diff options
author | michi_cc <michi_cc@openttd.org> | 2013-08-05 20:37:02 +0000 |
---|---|---|
committer | michi_cc <michi_cc@openttd.org> | 2013-08-05 20:37:02 +0000 |
commit | 13873d2534208ddc4596a9354d23d1e4940339ac (patch) | |
tree | c0145e41d56780536e4a15f26eaad1249fe3132c /src/window.cpp | |
parent | b96ef5c758ccb25e2ad780ea06c78c8b39df8ca8 (diff) | |
download | openttd-13873d2534208ddc4596a9354d23d1e4940339ac.tar.xz |
(svn r25678) -Codechange: Notify the video driver when an edit box lost (global) focus so it can abort any current input composition.
Diffstat (limited to 'src/window.cpp')
-rw-r--r-- | src/window.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/window.cpp b/src/window.cpp index 93a84812c..1ef8afa44 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -35,6 +35,7 @@ #include "statusbar_gui.h" #include "error.h" #include "game/game.hpp" +#include "video/video_driver.hpp" /** Values for _settings_client.gui.auto_scrolling */ enum ViewportAutoscrolling { @@ -366,6 +367,8 @@ bool EditBoxInGlobalFocus() void Window::UnfocusFocusedWidget() { if (this->nested_focus != NULL) { + if (this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); + /* 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; @@ -388,12 +391,21 @@ bool Window::SetFocusedWidget(int widget_index) /* Repaint the widget that lost focus. A focused edit box may else leave the caret on the screen. */ this->nested_focus->SetDirty(this); + if (this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); } this->nested_focus = this->GetWidget<NWidgetCore>(widget_index); return true; } /** + * Called when window looses focus + */ +void Window::OnFocusLost() +{ + if (this->nested_focus != NULL && this->nested_focus->type == WWT_EDITBOX) _video_driver->EditBoxLostFocus(); +} + +/** * Sets the enabled/disabled status of a list of widgets. * By default, widgets are enabled. * On certain conditions, they have to be disabled. @@ -953,7 +965,10 @@ Window::~Window() if (_last_scroll_window == this) _last_scroll_window = NULL; /* Make sure we don't try to access this window as the focused window when it doesn't exist anymore. */ - if (_focused_window == this) _focused_window = NULL; + if (_focused_window == this) { + this->OnFocusLost(); + _focused_window = NULL; + } this->DeleteChildWindows(); |