summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;