From 654cc39c7750bd7a8d798ab5c4732ed960135573 Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Mon, 20 Apr 2009 22:06:05 +0200 Subject: Repaired table and listbox scrolling when using the keyboard. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tametomo Signed-off-by: Bjørn Lindeijer --- src/gui/widgets/listbox.cpp | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'src/gui/widgets/listbox.cpp') diff --git a/src/gui/widgets/listbox.cpp b/src/gui/widgets/listbox.cpp index 1271bf77..322ed06d 100644 --- a/src/gui/widgets/listbox.cpp +++ b/src/gui/widgets/listbox.cpp @@ -22,6 +22,7 @@ #include "gui/widgets/listbox.h" #include "gui/palette.h" +#include "gui/sdlinput.h" #include "configuration.h" @@ -100,27 +101,34 @@ void ListBox::keyPressed(gcn::KeyEvent& keyEvent) { gcn::Key key = keyEvent.getKey(); - if (key.getValue() == gcn::Key::ENTER || key.getValue() == gcn::Key::SPACE) + if (key.getValue() == Key::ENTER || key.getValue() == Key::SPACE) { distributeActionEvent(); keyEvent.consume(); } - else if (key.getValue() == gcn::Key::UP) + else if (key.getValue() == Key::UP) { - setSelected(mSelected - 1); + if (getSelected() > 0) + setSelected(mSelected - 1); + else if (getSelected() == 0 && mWrappingEnabled) + setSelected(getListModel()->getNumberOfElements() - 1); keyEvent.consume(); } - else if (key.getValue() == gcn::Key::DOWN) + else if (key.getValue() == Key::DOWN) { - setSelected(mSelected + 1); + if (getSelected() < (getListModel()->getNumberOfElements() - 1)) + setSelected(mSelected + 1); + else if (getSelected() == (getListModel()->getNumberOfElements() - 1) && + mWrappingEnabled) + setSelected(0); keyEvent.consume(); } - else if (key.getValue() == gcn::Key::HOME) + else if (key.getValue() == Key::HOME) { setSelected(0); keyEvent.consume(); } - else if (key.getValue() == gcn::Key::END) + else if (key.getValue() == Key::END) { setSelected(getListModel()->getNumberOfElements() - 1); keyEvent.consume(); @@ -131,10 +139,10 @@ void ListBox::mouseWheelMovedUp(gcn::MouseEvent& mouseEvent) { if (isFocused()) { - if (getSelected() > 0 || (getSelected() == 0 && mWrappingEnabled)) - { + if (getSelected() > 0) setSelected(getSelected() - 1); - } + else if (getSelected() == 0 && mWrappingEnabled) + setSelected(getListModel()->getNumberOfElements() - 1); mouseEvent.consume(); } @@ -144,7 +152,11 @@ void ListBox::mouseWheelMovedDown(gcn::MouseEvent& mouseEvent) { if (isFocused()) { - setSelected(getSelected() + 1); + if (getSelected() < (getListModel()->getNumberOfElements() - 1)) + setSelected(getSelected() + 1); + else if (getSelected() == (getListModel()->getNumberOfElements() - 1) && + mWrappingEnabled) + setSelected(0); mouseEvent.consume(); } -- cgit v1.2.3-70-g09d2