Add paste command (Ctrl-V) in GUIChatConsole

This commit is contained in:
Kahrl 2014-09-19 22:26:38 +02:00
parent cfba55ba0a
commit daefd0ab36
3 changed files with 24 additions and 1 deletions

@ -407,6 +407,15 @@ void ChatPrompt::input(wchar_t ch)
m_nick_completion_end = 0; m_nick_completion_end = 0;
} }
void ChatPrompt::input(const std::wstring &str)
{
m_line.insert(m_cursor, str);
m_cursor += str.size();
clampView();
m_nick_completion_start = 0;
m_nick_completion_end = 0;
}
std::wstring ChatPrompt::submit() std::wstring ChatPrompt::submit()
{ {
std::wstring line = m_line; std::wstring line = m_line;

@ -142,8 +142,9 @@ public:
ChatPrompt(std::wstring prompt, u32 history_limit); ChatPrompt(std::wstring prompt, u32 history_limit);
~ChatPrompt(); ~ChatPrompt();
// Input character // Input character or string
void input(wchar_t ch); void input(wchar_t ch);
void input(const std::wstring &str);
// Submit, clear and return current line // Submit, clear and return current line
std::wstring submit(); std::wstring submit();

@ -507,6 +507,19 @@ bool GUIChatConsole::OnEvent(const SEvent& event)
scope); scope);
return true; return true;
} }
else if(event.KeyInput.Key == KEY_KEY_V && event.KeyInput.Control)
{
// Ctrl-V pressed
// paste text from clipboard
IOSOperator *os_operator = Environment->getOSOperator();
const c8 *text = os_operator->getTextFromClipboard();
if (text)
{
std::wstring wtext = narrow_to_wide(text);
m_chat_backend->getPrompt().input(wtext);
}
return true;
}
else if(event.KeyInput.Key == KEY_KEY_U && event.KeyInput.Control) else if(event.KeyInput.Key == KEY_KEY_U && event.KeyInput.Control)
{ {
// Ctrl-U pressed // Ctrl-U pressed