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

View File

@ -407,6 +407,15 @@ void ChatPrompt::input(wchar_t ch)
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 line = m_line;

View File

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

View File

@ -507,6 +507,19 @@ bool GUIChatConsole::OnEvent(const SEvent& event)
scope);
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)
{
// Ctrl-U pressed