summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJared Adams <jaxad0127@gmail.com>2009-05-13 10:57:05 -0600
committerJared Adams <jaxad0127@gmail.com>2009-05-13 10:57:05 -0600
commit7cddbca0dcfff234b6c6f124cb91840279c36118 (patch)
treecce25bc9e93c0bb9bd5b41185d1b32e776f4c2d3
parentd401dcb26695bddec8c39edc8151dbe309378519 (diff)
downloadmana-7cddbca0dcfff234b6c6f124cb91840279c36118.tar.gz
mana-7cddbca0dcfff234b6c6f124cb91840279c36118.tar.bz2
mana-7cddbca0dcfff234b6c6f124cb91840279c36118.tar.xz
mana-7cddbca0dcfff234b6c6f124cb91840279c36118.zip
Allow more control of NpcDialog using the keyboard
The move up and move down keys will now let you navigate the list mode and change the value on the integer mode.
-rw-r--r--src/game.cpp5
-rw-r--r--src/gui/npcdialog.cpp16
-rw-r--r--src/gui/npcdialog.h2
3 files changed, 23 insertions, 0 deletions
diff --git a/src/game.cpp b/src/game.cpp
index c07d6520..d60a4225 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -582,6 +582,11 @@ void Game::handleInput()
if (chatWindow->requestChatFocus())
used = true;
}
+ if (npcDialog->isVisible())
+ if (keyboard.isKeyActive(keyboard.KEY_MOVE_UP))
+ npcDialog->move(1);
+ else if (keyboard.isKeyActive(keyboard.KEY_MOVE_DOWN))
+ npcDialog->move(-1);
}
diff --git a/src/gui/npcdialog.cpp b/src/gui/npcdialog.cpp
index eeb76b88..3fa86b28 100644
--- a/src/gui/npcdialog.cpp
+++ b/src/gui/npcdialog.cpp
@@ -281,6 +281,22 @@ void NpcDialog::integerRequest(int defaultValue, int min, int max)
buildLayout();
}
+void NpcDialog::move(int amount)
+{
+ if (mActionState != NPC_ACTION_INPUT)
+ return;
+
+ switch (mInputState)
+ {
+ case NPC_INPUT_INTEGER:
+ mIntField->setValue(mIntField->getValue() + amount);
+ break;
+ case NPC_INPUT_LIST:
+ mItemList->setSelected(mItemList->getSelected() - amount);
+ break;
+ }
+}
+
void NpcDialog::widgetResized(const gcn::Event &event)
{
Window::widgetResized(event);
diff --git a/src/gui/npcdialog.h b/src/gui/npcdialog.h
index bd738e81..ecce0c62 100644
--- a/src/gui/npcdialog.h
+++ b/src/gui/npcdialog.h
@@ -141,6 +141,8 @@ class NpcDialog : public Window, public gcn::ActionListener,
*/
void integerRequest(int defaultValue = 0, int min = 0, int max = 2000);
+ void move(int amount);
+
/**
* Called when resizing the window.
*