summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-09-04 00:02:50 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-09-04 00:02:50 +0200
commit57b89099ecfe68e1ccf5c0c4530a07f9fa84e3e9 (patch)
tree8bcfbf6ca7cab92df3d1a1e7d6618c01dacf1794 /src/client.cc
parentc4dd6b40386ba9e041c82c6a785de1eec8c7a0aa (diff)
Client::MenuMode wrap through options with j/k Ctrl-n/Ctrl-p and tab
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/client.cc b/src/client.cc
index 8576c885..c48aca25 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -64,14 +64,24 @@ public:
key == Key(Key::Modifiers::Control, 'i') or
key == Key(Key::Modifiers::None, 'j'))
{
- m_client.menu_ctrl(MenuCommand::SelectNext);
- m_selected = std::min(m_selected+1, m_choice_count-1);
+ if (++m_selected >= m_choice_count)
+ {
+ m_client.menu_ctrl(MenuCommand::SelectFirst);
+ m_selected = 0;
+ }
+ else
+ m_client.menu_ctrl(MenuCommand::SelectNext);
}
if (key == Key(Key::Modifiers::Control, 'p') or
key == Key(Key::Modifiers::None, 'k'))
{
- m_client.menu_ctrl(MenuCommand::SelectPrev);
- m_selected = std::max(m_selected-1, 0);
+ if (--m_selected < 0)
+ {
+ m_client.menu_ctrl(MenuCommand::SelectLast);
+ m_selected = m_choice_count-1;
+ }
+ else
+ m_client.menu_ctrl(MenuCommand::SelectPrev);
}
if (key == Key(Key::Modifiers::Control, 'm'))
{