src/gui/widgets/qlinecontrol.cpp
changeset 30 5dc02b23752f
parent 19 fcece45ef507
child 37 758a864f9613
--- a/src/gui/widgets/qlinecontrol.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/src/gui/widgets/qlinecontrol.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -136,9 +136,9 @@
 
     \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);
@@ -1350,6 +1350,7 @@
 #endif
     switch(ev->type()){
 #ifndef QT_NO_GRAPHICSVIEW
+        case QEvent::GraphicsSceneMouseDoubleClick:
         case QEvent::GraphicsSceneMouseMove:
         case QEvent::GraphicsSceneMouseRelease:
         case QEvent::GraphicsSceneMousePress:{
@@ -1439,6 +1440,7 @@
             moveCursor(cursor, mark);
             break;
         }
+        case QEvent::GraphicsSceneMouseDoubleClick:
         case QEvent::MouseButtonDblClick:
             if (ev->button() == Qt::LeftButton) {
                 selectWordAtPos(xToPos(ev->pos().x()));
@@ -1576,8 +1578,14 @@
         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()) {
@@ -1761,7 +1769,6 @@
                 }
                 break;
 #endif
-
             default:
                 if (!handled)
                     unknown = true;