-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
+void ChatScene::clickTimeout() {
+ if(!_leftButtonPressed && _clickMode == SingleClick)
+ handleClick(Qt::LeftButton, _clickPos);
+}
+
+void ChatScene::handleClick(Qt::MouseButton button, const QPointF &scenePos) {
+ if(button == Qt::LeftButton) {
+ clearSelection();
+
+ // Now send click down to items
+ ChatItem *chatItem = chatItemAt(scenePos);
+ if(chatItem) {
+ chatItem->handleClick(chatItem->mapFromScene(scenePos), _clickMode);
+ }
+ _clickHandled = true;
+ }
+}
+
+void ChatScene::initiateDrag(QWidget *source) {
+ QDrag *drag = new QDrag(source);
+ QMimeData *mimeData = new QMimeData;
+ mimeData->setText(selection());
+ drag->setMimeData(mimeData);
+
+ drag->exec(Qt::CopyAction);
+}
+
+/******** SELECTIONS ******************************************************************************/
+
+void ChatScene::selectionToClipboard(QClipboard::Mode mode) {
+ if(!hasSelection())
+ return;
+
+ stringToClipboard(selection(), mode);
+}
+
+void ChatScene::stringToClipboard(const QString &str_, QClipboard::Mode mode) {
+ QString str = str_;
+ // remove trailing linefeeds
+ if(str.endsWith('\n'))
+ str.chop(1);
+
+ switch(mode) {
+ case QClipboard::Clipboard:
+ QApplication::clipboard()->setText(str);
+ break;
+ case QClipboard::Selection:
+ if(QApplication::clipboard()->supportsSelection())
+ QApplication::clipboard()->setText(str, QClipboard::Selection);
+ break;
+ default:
+ break;
+ };