summaryrefslogtreecommitdiffstats
path: root/src/gui/widgets/qlinecontrol.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@nokia.com>2010-03-09 18:19:38 (GMT)
committerThiago Macieira <thiago.macieira@nokia.com>2010-03-10 19:00:52 (GMT)
commit4d27295ce01b00f27ceb6d9c6c3227425cbf0d70 (patch)
tree69af904da0222f4dbce31e8a4b1e30923f9b0d6e /src/gui/widgets/qlinecontrol.cpp
parenta747e171d316b25ba10dc36f6d54d1cbecad5c32 (diff)
downloadQt-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/qlinecontrol.cpp')
-rw-r--r--src/gui/widgets/qlinecontrol.cpp14
1 files changed, 10 insertions, 4 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()) {