summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-03-04 16:08:55 +0300
committerAndrei Karas <akaras@inbox.ru>2012-03-04 16:08:55 +0300
commitf74202392745923f9ce372a6bdcd0a45db6bcd08 (patch)
tree34804d1fb3a94060544529a781983dd108ce1586 /src/gui
parent27de1601aa4a952d9555cc9b1aba8630f9043af4 (diff)
downloadplus-f74202392745923f9ce372a6bdcd0a45db6bcd08.tar.gz
plus-f74202392745923f9ce372a6bdcd0a45db6bcd08.tar.bz2
plus-f74202392745923f9ce372a6bdcd0a45db6bcd08.tar.xz
plus-f74202392745923f9ce372a6bdcd0a45db6bcd08.zip
Fix possible crash in npc menu.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/npcdialog.cpp2
-rw-r--r--src/gui/widgets/listbox.cpp10
-rw-r--r--src/gui/widgets/listbox.h2
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;