diff options
author | Thiago Macieira <thiago.macieira@nokia.com> | 2010-03-09 18:19:38 (GMT) |
---|---|---|
committer | Thiago Macieira <thiago.macieira@nokia.com> | 2010-03-10 19:00:52 (GMT) |
commit | 4d27295ce01b00f27ceb6d9c6c3227425cbf0d70 (patch) | |
tree | 69af904da0222f4dbce31e8a4b1e30923f9b0d6e /src/gui/widgets | |
parent | a747e171d316b25ba10dc36f6d54d1cbecad5c32 (diff) | |
download | Qt-4d27295ce01b00f27ceb6d9c6c3227425cbf0d70.zip Qt-4d27295ce01b00f27ceb6d9c6c3227425cbf0d70.tar.gz Qt-4d27295ce01b00f27ceb6d9c6c3227425cbf0d70.tar.bz2 |
Make QTextControl-based classes and QLineEdit understand Ctrl+Shift+Insert
On X11, this key is reserved for pasting the text selection
(a.k.a. the PRIMARY selection). KDE apps already honour this, not all
GNOME ones do, but it was agreed with them on xdg@freedesktop.org.
Reviewed-By: mae <qt-info@nokia.com>
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/qlinecontrol.cpp | 14 | ||||
-rw-r--r-- | src/gui/widgets/qlinecontrol_p.h | 2 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/gui/widgets/qlinecontrol.cpp b/src/gui/widgets/qlinecontrol.cpp index 9ec0feb..8e715a9 100644 --- a/src/gui/widgets/qlinecontrol.cpp +++ b/src/gui/widgets/qlinecontrol.cpp @@ -136,9 +136,9 @@ void QLineControl::copy(QClipboard::Mode mode) const \sa insert() */ -void QLineControl::paste() +void QLineControl::paste(QClipboard::Mode clipboardMode) { - QString clip = QApplication::clipboard()->text(QClipboard::Clipboard); + QString clip = QApplication::clipboard()->text(clipboardMode); if (!clip.isEmpty() || hasSelectedText()) { separate(); //make it a separate undo/redo command insert(clip); @@ -1576,8 +1576,14 @@ void QLineControl::processKeyEvent(QKeyEvent* event) copy(); } else if (event == QKeySequence::Paste) { - if (!isReadOnly()) - paste(); + if (!isReadOnly()) { + QClipboard::Mode mode = QClipboard::Clipboard; +#ifdef Q_WS_X11 + if (event->modifiers() == (Qt::CTRL | Qt::SHIFT) && event->key() == Qt::Key_Insert) + mode = QClipboard::Selection; +#endif + paste(mode); + } } else if (event == QKeySequence::Cut) { if (!isReadOnly()) { diff --git a/src/gui/widgets/qlinecontrol_p.h b/src/gui/widgets/qlinecontrol_p.h index 3f1bc2c..dd82581 100644 --- a/src/gui/widgets/qlinecontrol_p.h +++ b/src/gui/widgets/qlinecontrol_p.h @@ -128,7 +128,7 @@ public: #ifndef QT_NO_CLIPBOARD void copy(QClipboard::Mode mode = QClipboard::Clipboard) const; - void paste(); + void paste(QClipboard::Mode mode = QClipboard::Clipboard); #endif int cursor() const; |