diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-03-04 16:08:55 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-03-04 16:08:55 +0300 |
commit | f74202392745923f9ce372a6bdcd0a45db6bcd08 (patch) | |
tree | 34804d1fb3a94060544529a781983dd108ce1586 /src | |
parent | 27de1601aa4a952d9555cc9b1aba8630f9043af4 (diff) | |
download | plus-f74202392745923f9ce372a6bdcd0a45db6bcd08.tar.gz plus-f74202392745923f9ce372a6bdcd0a45db6bcd08.tar.bz2 plus-f74202392745923f9ce372a6bdcd0a45db6bcd08.tar.xz plus-f74202392745923f9ce372a6bdcd0a45db6bcd08.zip |
Fix possible crash in npc menu.
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/npcdialog.cpp | 2 | ||||
-rw-r--r-- | src/gui/widgets/listbox.cpp | 10 | ||||
-rw-r--r-- | src/gui/widgets/listbox.h | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/gui/npcdialog.cpp b/src/gui/npcdialog.cpp index dd9e79b46..12b3e1244 100644 --- a/src/gui/npcdialog.cpp +++ b/src/gui/npcdialog.cpp @@ -355,7 +355,7 @@ void NpcDialog::parseListItems(const std::string &itemString) void NpcDialog::refocus() { if (!mItems.empty()) - mItemList->requestFocus(); + mItemList->refocus(); } void NpcDialog::textRequest(const std::string &defaultText) diff --git a/src/gui/widgets/listbox.cpp b/src/gui/widgets/listbox.cpp index 28fe9daa1..2944c5be6 100644 --- a/src/gui/widgets/listbox.cpp +++ b/src/gui/widgets/listbox.cpp @@ -29,6 +29,7 @@ #include "gui/sdlinput.h" #include "gui/theme.h" +#include <guichan/focushandler.hpp> #include <guichan/font.hpp> #include <guichan/graphics.hpp> #include <guichan/key.hpp> @@ -149,3 +150,12 @@ void ListBox::mouseDragged(gcn::MouseEvent &event) if (getRowHeight()) setSelected(y / getRowHeight()); } + +void ListBox::refocus() +{ + if (!mFocusHandler) + return; + + if (isFocusable()) + mFocusHandler->requestFocus(this); +} diff --git a/src/gui/widgets/listbox.h b/src/gui/widgets/listbox.h index e4b6dd54e..1df07f19d 100644 --- a/src/gui/widgets/listbox.h +++ b/src/gui/widgets/listbox.h @@ -66,6 +66,8 @@ class ListBox : public gcn::ListBox void mouseDragged(gcn::MouseEvent &event); + void refocus(); + protected: gcn::Color mHighlightColor; static float mAlpha; |