From b29ecdf0db87c5f36143e3fbe6af1fada540860d Mon Sep 17 00:00:00 2001 From: SirLynix Date: Sat, 27 Jan 2024 15:12:08 +0100 Subject: [PATCH] Widgets/AbstractTextAreaWidget: Add support for additional copy/cut/past shortcut - ctrl + insert (copy) - shift + insert (paste) - shift + delete (cut) --- src/Nazara/Widgets/AbstractTextAreaWidget.cpp | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/Nazara/Widgets/AbstractTextAreaWidget.cpp b/src/Nazara/Widgets/AbstractTextAreaWidget.cpp index fc3bcfae5..e6438968a 100644 --- a/src/Nazara/Widgets/AbstractTextAreaWidget.cpp +++ b/src/Nazara/Widgets/AbstractTextAreaWidget.cpp @@ -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));