From 34ce2c58ecfe9bfb04688af321e68f80236d104d Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Thu, 25 Feb 2010 23:09:41 +0100 Subject: Handle Ctrl+v for pasting in text fields Reviewed-by: Jared Adams --- src/gui/widgets/textfield.cpp | 16 ++++++++++++++++ src/gui/widgets/textfield.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/src/gui/widgets/textfield.cpp b/src/gui/widgets/textfield.cpp index 803de396..278b4cb9 100644 --- a/src/gui/widgets/textfield.cpp +++ b/src/gui/widgets/textfield.cpp @@ -31,6 +31,7 @@ #include "resources/image.h" #include "resources/resourcemanager.h" +#include "utils/copynpaste.h" #include "utils/dtor.h" #include @@ -250,8 +251,23 @@ void TextField::keyPressed(gcn::KeyEvent &keyEvent) if (mLoseFocusOnTab) return; break; + + case 22: // Control code 22, SYNCHRONOUS IDLE, sent on Ctrl+v + handlePaste(); + break; } keyEvent.consume(); fixScroll(); } + +void TextField::handlePaste() +{ + std::string text = getText(); + std::string::size_type caretPos = getCaretPosition(); + + if (RetrieveBuffer(text, caretPos)) { + setText(text); + setCaretPosition(caretPos); + } +} diff --git a/src/gui/widgets/textfield.h b/src/gui/widgets/textfield.h index c66139cd..58e37f5c 100644 --- a/src/gui/widgets/textfield.h +++ b/src/gui/widgets/textfield.h @@ -91,6 +91,8 @@ class TextField : public gcn::TextField int getValue() const; private: + void handlePaste(); + static int instances; static float mAlpha; static ImageRect skin; -- cgit v1.2.3-70-g09d2