diff options
-rw-r--r-- | src/widgets/widgets/qplaintextedit.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qtextedit.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgetlinecontrol.cpp | 9 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgettextcontrol.cpp | 14 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgettextcontrol_p.h | 2 |
5 files changed, 23 insertions, 6 deletions
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 00fe383e1d..5f4b46c1cc 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -962,7 +962,7 @@ void QPlainTextEditPrivate::pageUpDown(QTextCursor::MoveOperation op, QTextCurso } if (moveCursor) { - control->setTextCursor(cursor); + control->setTextCursor(cursor, moveMode == QTextCursor::KeepAnchor); pageUpDownLastCursorYIsValid = true; } } diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index 25e973d90f..9cdee2964f 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -270,7 +270,7 @@ void QTextEditPrivate::pageUpDown(QTextCursor::MoveOperation op, QTextCursor::Mo vbar->triggerAction(QAbstractSlider::SliderPageStepAdd); } } - control->setTextCursor(cursor); + control->setTextCursor(cursor, moveMode == QTextCursor::KeepAnchor); } #if QT_CONFIG(scrollbar) diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp index 29ac32cadc..77c62b106b 100644 --- a/src/widgets/widgets/qwidgetlinecontrol.cpp +++ b/src/widgets/widgets/qwidgetlinecontrol.cpp @@ -1944,10 +1944,15 @@ void QWidgetLineControl::processKeyEvent(QKeyEvent* event) return; } - if (unknown) + if (unknown) { event->ignore(); - else + } else { +#ifndef QT_NO_CLIPBOARD + if (QApplication::clipboard()->supportsSelection()) + copy(QClipboard::Selection); +#endif event->accept(); + } } bool QWidgetLineControl::isUndoAvailable() const diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index ef1be67975..1972ff366b 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -923,7 +923,7 @@ QTextDocument *QWidgetTextControl::document() const return d->doc; } -void QWidgetTextControl::setTextCursor(const QTextCursor &cursor) +void QWidgetTextControl::setTextCursor(const QTextCursor &cursor, bool selectionClipboard) { Q_D(QWidgetTextControl); d->cursorIsFocusIndicator = false; @@ -937,6 +937,11 @@ void QWidgetTextControl::setTextCursor(const QTextCursor &cursor) d->repaintOldAndNewSelection(oldSelection); if (posChanged) emit cursorPositionChanged(); + +#ifndef QT_NO_CLIPBOARD + if (selectionClipboard) + d->setClipboardSelection(); +#endif } QTextCursor QWidgetTextControl::textCursor() const @@ -1226,6 +1231,9 @@ void QWidgetTextControlPrivate::keyPressEvent(QKeyEvent *e) if (e == QKeySequence::SelectAll) { e->accept(); q->selectAll(); +#ifndef QT_NO_CLIPBOARD + setClipboardSelection(); +#endif return; } #ifndef QT_NO_CLIPBOARD @@ -1377,6 +1385,10 @@ process: accept: +#ifndef QT_NO_CLIPBOARD + setClipboardSelection(); +#endif + e->accept(); cursorOn = true; diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h index 54cb136621..54428e542b 100644 --- a/src/widgets/widgets/qwidgettextcontrol_p.h +++ b/src/widgets/widgets/qwidgettextcontrol_p.h @@ -105,7 +105,7 @@ public: void setDocument(QTextDocument *document); QTextDocument *document() const; - void setTextCursor(const QTextCursor &cursor); + void setTextCursor(const QTextCursor &cursor, bool selectionClipboard = false); QTextCursor textCursor() const; void setTextInteractionFlags(Qt::TextInteractionFlags flags); |