Widgets/[Rich]TextAreaWidget: Add copy/cut/paste support

This commit is contained in:
Jérôme Leclercq
2021-11-28 20:21:07 +01:00
parent a29c0b0e63
commit bb93209713
6 changed files with 108 additions and 2 deletions

View File

@@ -165,6 +165,59 @@ namespace Nz
switch (key.virtualKey)
{
// Copy (Ctrl+C)
case Keyboard::VKey::C:
{
if (!key.control)
break;
bool ignoreDefaultAction = (m_echoMode != EchoMode::Normal);
OnTextAreaKeyCopy(this, &ignoreDefaultAction);
if (ignoreDefaultAction || !HasSelection())
return true;
CopySelectionToClipboard(m_cursorPositionBegin, m_cursorPositionEnd);
return true;
}
// Paste (Ctrl+V)
case Keyboard::VKey::V:
{
if (!key.control)
break;
bool ignoreDefaultAction = false;
OnTextAreaKeyPaste(this, &ignoreDefaultAction);
if (ignoreDefaultAction)
return true;
if (HasSelection())
EraseSelection();
PasteFromClipboard(m_cursorPositionBegin);
return true;
}
// Cut (Ctrl+X)
case Keyboard::VKey::X:
{
if (!key.control)
break;
bool ignoreDefaultAction = (m_echoMode != EchoMode::Normal);
OnTextAreaKeyCut(this, &ignoreDefaultAction);
if (ignoreDefaultAction || !HasSelection())
return true;
CopySelectionToClipboard(m_cursorPositionBegin, m_cursorPositionEnd);
EraseSelection();
return true;
}
case Keyboard::VKey::Backspace:
{
bool ignoreDefaultAction = false;