diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-09-04 00:02:50 +0200 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-09-04 00:02:50 +0200 |
| commit | 57b89099ecfe68e1ccf5c0c4530a07f9fa84e3e9 (patch) | |
| tree | 8bcfbf6ca7cab92df3d1a1e7d6618c01dacf1794 /src/client.cc | |
| parent | c4dd6b40386ba9e041c82c6a785de1eec8c7a0aa (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.cc | 18 |
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')) { |
