From c95e8cea9060b25fa5115d19090b51f03290adc5 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Fri, 15 Aug 2008 14:56:14 +0200 Subject: [PATCH] Clipboard will no longer be randomly overwritten with an empty string --- src/qtui/chatitem.cpp | 6 ++++-- src/qtui/chatscene.cpp | 17 +++++++++++------ src/qtui/chatscene.h | 1 + 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index 036a6e62..051151c5 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -208,7 +208,7 @@ void ChatItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { if(_selectionMode == NoSelection) { chatScene()->setSelectingItem(this); // removes earlier selection if exists _selectionStart = _selectionEnd = posToCursor(event->pos()); - _selectionMode = PartialSelection; + //_selectionMode = PartialSelection; } else { chatScene()->setSelectingItem(0); _selectionMode = NoSelection; @@ -226,6 +226,8 @@ void ChatItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { qint16 end = posToCursor(event->pos()); if(end != _selectionEnd) { _selectionEnd = end; + if(_selectionStart != _selectionEnd) _selectionMode = PartialSelection; + else _selectionMode = NoSelection; update(); } } else { @@ -243,7 +245,7 @@ void ChatItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { _selectionEnd = posToCursor(event->pos()); QString selection = data(MessageModel::DisplayRole).toString().mid(qMin(_selectionStart, _selectionEnd), qAbs(_selectionStart - _selectionEnd)); - QApplication::clipboard()->setText(selection, QClipboard::Clipboard); // TODO configure where selections should go + chatScene()->putToClipboard(selection); event->accept(); } else { event->ignore(); diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index e04784c9..cb06e74c 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -266,12 +266,7 @@ void ChatScene::mousePressEvent(QGraphicsSceneMouseEvent *event) { void ChatScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if(_isSelecting && !event->buttons() & Qt::LeftButton) { -# ifdef Q_WS_X11 - QApplication::clipboard()->setText(selectionToString(), QClipboard::Selection); -# endif -//# else - QApplication::clipboard()->setText(selectionToString()); -//# endif + putToClipboard(selectionToString()); _isSelecting = false; event->accept(); } else { @@ -279,6 +274,16 @@ void ChatScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { } } +void ChatScene::putToClipboard(const QString &selection) { + // TODO Configure clipboards +# ifdef Q_WS_X11 + QApplication::clipboard()->setText(selection, QClipboard::Selection); +# endif +//# else + QApplication::clipboard()->setText(selection); +//# endif +} + //!\brief Convert current selection to human-readable string. QString ChatScene::selectionToString() const { //TODO Make selection format configurable! diff --git a/src/qtui/chatscene.h b/src/qtui/chatscene.h index 1dae1e22..c0231f76 100644 --- a/src/qtui/chatscene.h +++ b/src/qtui/chatscene.h @@ -58,6 +58,7 @@ class ChatScene : public QGraphicsScene { void setSelectingItem(ChatItem *item); ChatItem *selectingItem() const { return _selectingItem; } void startGlobalSelection(ChatItem *item, const QPointF &itemPos); + void putToClipboard(const QString &); void setIsFetchingBacklog(bool); inline void setBufferForBacklogFetching(BufferId buffer); -- 2.20.1