forked from qt-creator/qt-creator
Editor: fix clipboard collecting via mouse selections
Fixes: QTCREATORBUG-26471 Change-Id: I08264204c5ea5753b326417e5ba3a451cc6ef8f6 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -502,6 +502,7 @@ public:
|
|||||||
void duplicateSelection(bool comment);
|
void duplicateSelection(bool comment);
|
||||||
void updateCannotDecodeInfo();
|
void updateCannotDecodeInfo();
|
||||||
void collectToCircularClipboard();
|
void collectToCircularClipboard();
|
||||||
|
void setClipboardSelection();
|
||||||
|
|
||||||
void ctor(const QSharedPointer<TextDocument> &doc);
|
void ctor(const QSharedPointer<TextDocument> &doc);
|
||||||
void handleHomeKey(bool anchor, bool block);
|
void handleHomeKey(bool anchor, bool block);
|
||||||
@@ -5217,7 +5218,8 @@ void TextEditorWidget::mousePressEvent(QMouseEvent *e)
|
|||||||
|
|
||||||
void TextEditorWidget::mouseReleaseEvent(QMouseEvent *e)
|
void TextEditorWidget::mouseReleaseEvent(QMouseEvent *e)
|
||||||
{
|
{
|
||||||
if (d->m_linkPressed && d->isMouseNavigationEvent(e) && e->button() == Qt::LeftButton) {
|
const Qt::MouseButton button = e->button();
|
||||||
|
if (d->m_linkPressed && d->isMouseNavigationEvent(e) && button == Qt::LeftButton) {
|
||||||
EditorManager::addCurrentPositionToNavigationHistory();
|
EditorManager::addCurrentPositionToNavigationHistory();
|
||||||
bool inNextSplit = ((e->modifiers() & Qt::AltModifier) && !alwaysOpenLinksInNextSplit())
|
bool inNextSplit = ((e->modifiers() & Qt::AltModifier) && !alwaysOpenLinksInNextSplit())
|
||||||
|| (alwaysOpenLinksInNextSplit() && !(e->modifiers() & Qt::AltModifier));
|
|| (alwaysOpenLinksInNextSplit() && !(e->modifiers() & Qt::AltModifier));
|
||||||
@@ -5227,12 +5229,22 @@ void TextEditorWidget::mouseReleaseEvent(QMouseEvent *e)
|
|||||||
if (self && self->openLink(symbolLink, inNextSplit))
|
if (self && self->openLink(symbolLink, inNextSplit))
|
||||||
self->d->clearLink();
|
self->d->clearLink();
|
||||||
}, true, inNextSplit);
|
}, true, inNextSplit);
|
||||||
|
} else if (button == Qt::MiddleButton
|
||||||
|
&& !isReadOnly()
|
||||||
|
&& QGuiApplication::clipboard()->supportsSelection()) {
|
||||||
|
if (!(e->modifiers() & Qt::AltModifier))
|
||||||
|
doSetTextCursor(cursorForPosition(e->pos()));
|
||||||
|
if (const QMimeData *md = QGuiApplication::clipboard()->mimeData(QClipboard::Selection))
|
||||||
|
insertFromMimeData(md);
|
||||||
|
e->accept();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!HostOsInfo::isLinuxHost() && handleForwardBackwardMouseButtons(e))
|
if (!HostOsInfo::isLinuxHost() && handleForwardBackwardMouseButtons(e))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QPlainTextEdit::mouseReleaseEvent(e);
|
QPlainTextEdit::mouseReleaseEvent(e);
|
||||||
|
d->setClipboardSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextEditorWidget::mouseDoubleClickEvent(QMouseEvent *e)
|
void TextEditorWidget::mouseDoubleClickEvent(QMouseEvent *e)
|
||||||
@@ -5247,6 +5259,14 @@ void TextEditorWidget::mouseDoubleClickEvent(QMouseEvent *e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QPlainTextEdit::mouseDoubleClickEvent(e);
|
QPlainTextEdit::mouseDoubleClickEvent(e);
|
||||||
|
d->setClipboardSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TextEditorWidgetPrivate::setClipboardSelection()
|
||||||
|
{
|
||||||
|
QClipboard *clipboard = QGuiApplication::clipboard();
|
||||||
|
if (m_cursors.hasSelection() && clipboard->supportsSelection())
|
||||||
|
clipboard->setMimeData(q->createMimeDataFromSelection(), QClipboard::Selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextEditorWidget::leaveEvent(QEvent *e)
|
void TextEditorWidget::leaveEvent(QEvent *e)
|
||||||
|
Reference in New Issue
Block a user