summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc36
1 files changed, 12 insertions, 24 deletions
diff --git a/src/client.cc b/src/client.cc
index 2be77de5..1500c6c4 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -42,7 +42,6 @@ private:
int m_count = 0;
};
-
class Client::MenuMode : public Client::Mode
{
public:
@@ -50,12 +49,12 @@ public:
: Client::Mode(client),
m_callback(callback), m_choice_count(choices.size()), m_selected(0)
{
- client.show_menu(choices);
+ client.menu_show(choices);
}
~MenuMode()
{
- m_client.menu_ctrl(MenuCommand::Close);
+ m_client.menu_hide();
}
void on_key(const Key& key, Context& context) override
@@ -65,23 +64,15 @@ public:
key == Key(Key::Modifiers::None, 'j'))
{
if (++m_selected >= m_choice_count)
- {
- m_client.menu_ctrl(MenuCommand::SelectFirst);
m_selected = 0;
- }
- else
- m_client.menu_ctrl(MenuCommand::SelectNext);
+ m_client.menu_select(m_selected);
}
if (key == Key(Key::Modifiers::Control, 'p') or
key == Key(Key::Modifiers::None, 'k'))
{
if (--m_selected < 0)
- {
- m_client.menu_ctrl(MenuCommand::SelectLast);
m_selected = m_choice_count-1;
- }
- else
- m_client.menu_ctrl(MenuCommand::SelectPrev);
+ m_client.menu_select(m_selected);
}
if (key == Key(Key::Modifiers::Control, 'm'))
{
@@ -98,7 +89,7 @@ public:
if (key.modifiers == Key::Modifiers::None and
key.key >= '0' and key.key <= '9')
{
- m_client.menu_ctrl(MenuCommand::Close);
+ m_client.menu_hide();
// save callback as reset_normal_mode will delete this
MenuCallback callback = std::move(m_callback);
m_client.reset_normal_mode();
@@ -125,7 +116,7 @@ public:
~PromptMode()
{
- m_client.menu_ctrl(MenuCommand::Close);
+ m_client.menu_hide();
}
void on_key(const Key& key, Context& context) override
@@ -214,14 +205,14 @@ public:
--m_cursor_pos;
}
- m_client.menu_ctrl(MenuCommand::Close);
+ m_client.menu_hide();
m_current_completion = -1;
}
else if (key == Key(Key::Modifiers::Control, 'r'))
{
Key k = m_client.get_key();
String reg = RegisterManager::instance()[k.key].values(context)[0];
- m_client.menu_ctrl(MenuCommand::Close);
+ m_client.menu_hide();
m_current_completion = -1;
m_result = m_result.substr(0, m_cursor_pos) + reg + m_result.substr(m_cursor_pos, String::npos);
m_cursor_pos += reg.length();
@@ -234,13 +225,11 @@ public:
if (m_completions.candidates.empty())
return;
- m_client.menu_ctrl(MenuCommand::Close);
- m_client.show_menu(m_completions.candidates);
+ m_client.menu_hide();
+ m_client.menu_show(m_completions.candidates);
m_text_before_completion = m_result.substr(m_completions.start,
m_completions.end - m_completions.start);
}
- else
- m_client.menu_ctrl(MenuCommand::SelectNext);
++m_current_completion;
String completion;
@@ -250,24 +239,23 @@ public:
std::find(m_completions.candidates.begin(), m_completions.candidates.end(), m_text_before_completion) == m_completions.candidates.end())
{
completion = m_text_before_completion;
- m_client.menu_ctrl(MenuCommand::SelectNone);
}
else
{
m_current_completion = 0;
completion = m_completions.candidates[0];
- m_client.menu_ctrl(MenuCommand::SelectFirst);
}
}
else
completion = m_completions.candidates[m_current_completion];
+ m_client.menu_select(m_current_completion);
m_result = m_result.substr(0, m_completions.start) + completion;
m_cursor_pos = m_completions.start + completion.length();
}
else
{
- m_client.menu_ctrl(MenuCommand::Close);
+ m_client.menu_hide();
m_current_completion = -1;
m_result = m_result.substr(0, m_cursor_pos) + key.key + m_result.substr(m_cursor_pos, String::npos);
++m_cursor_pos;