Widgets/AbstractTextAreaWidget: Add support for additional copy/cut/past shortcut

- ctrl + insert (copy)
- shift + insert (paste)
- shift + delete (cut)
This commit is contained in:
SirLynix 2024-01-27 15:12:08 +01:00
parent aad271febe
commit b29ecdf0db
1 changed files with 46 additions and 0 deletions

View File

@ -216,6 +216,38 @@ namespace Nz
return true;
}
case Keyboard::VKey::Insert:
{
if (key.control)
{
if (key.shift)
break;
// Copy (Ctrl + Insert)
bool ignoreDefaultAction = (m_echoMode != EchoMode::Normal);
OnTextAreaKeyCopy(this, &ignoreDefaultAction);
if (ignoreDefaultAction || !HasSelection())
return true;
CopySelectionToClipboard(m_cursorPositionBegin, m_cursorPositionEnd);
return true;
}
else if (key.shift)
{
// Paste (Shift + Insert)
bool ignoreDefaultAction = false;
OnTextAreaKeyPaste(this, &ignoreDefaultAction);
if (ignoreDefaultAction)
return true;
if (HasSelection())
EraseSelection();
}
return true;
}
// Cut (Ctrl+X)
case Keyboard::VKey::X:
{
@ -259,7 +291,21 @@ namespace Nz
case Keyboard::VKey::Delete:
{
if (HasSelection())
{
// Cut (Shift + Delete)
if (key.shift)
{
bool ignoreDefaultAction = (m_echoMode != EchoMode::Normal);
OnTextAreaKeyCut(this, &ignoreDefaultAction);
if (ignoreDefaultAction || !HasSelection())
return true;
CopySelectionToClipboard(m_cursorPositionBegin, m_cursorPositionEnd);
}
EraseSelection();
}
else
Erase(GetGlyphIndex(m_cursorPositionBegin));