diff options
author | Volodymyr Samokhatko <volodymyr.samokhatko@gmail.com> | 2017-04-05 22:52:27 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-02-03 11:31:28 +0000 |
commit | b9f9357c27714acc23257c726b886539f49c0988 (patch) | |
tree | 0ea47ae20ede1254d9cdaa7f40c0bb098028553f | |
parent | b554869a8f546dfccc5ded528fb0680281fac6d4 (diff) |
Fix populating selection clipboard with keyboard
Task-number: QTBUG-59879
Change-Id: I6948919fc90995c60a34b5bd6b4a225c1a59fd9b
Reviewed-by: Liang Qi <liang.qi@qt.io>
(cherry picked from commit 976f28e7bb7cddb11459600f293868abcf7da948)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-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 b730bf5e09..97e6ccef36 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -972,7 +972,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 66718beb19..62ab292e37 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 63c4c8c562..64fad44f39 100644 --- a/src/widgets/widgets/qwidgetlinecontrol.cpp +++ b/src/widgets/widgets/qwidgetlinecontrol.cpp @@ -1948,10 +1948,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 d155fb0e0f..d20f949edb 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -922,7 +922,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; @@ -936,6 +936,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 @@ -1225,6 +1230,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 @@ -1376,6 +1384,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 4de7374ddb..141eb06e0c 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); |