From 709d88e1d7cede7fee485b85798413468f324abe Mon Sep 17 00:00:00 2001 From: Alexander von Renteln Date: Sun, 2 Nov 2008 23:27:28 +0100 Subject: [PATCH] added context menu to links --- src/qtui/chatitem.cpp | 25 +++++++++++++++++++++++++ src/qtui/chatitem.h | 3 +++ 2 files changed, 28 insertions(+) diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index 12832ec3..d1443a68 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -26,6 +26,8 @@ #include #include #include +#include + #include "chatitem.h" #include "chatlinemodel.h" @@ -508,6 +510,29 @@ void ContentsChatItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { event->accept(); } +void ContentsChatItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { + qint16 idx = posToCursor(event->pos()); + for(int i = 0; i < privateData()->clickables.count(); i++) { + Clickable click = privateData()->clickables.at(i); + if(idx >= click.start && idx < click.start + click.length) { + if(click.type == Clickable::Url) { + QMenu menu; + QAction *copyToClipboard = menu.addAction(QObject::tr("Copy to Clipboard")); + QAction *selected = menu.exec(event->screenPos()); + if(selected == copyToClipboard) { + QString url = data(ChatLineModel::DisplayRole).toString().mid(click.start, click.length); +# ifdef Q_WS_X11 + QApplication::clipboard()->setText(url, QClipboard::Selection); +# endif +//# else + QApplication::clipboard()->setText(url); +//# endif + } + } + } + } +} + void ContentsChatItem::showWebPreview(const Clickable &click) { #ifdef HAVE_WEBKIT QTextLine line = layout()->lineForTextPosition(click.start); diff --git a/src/qtui/chatitem.h b/src/qtui/chatitem.h index 1f61fff6..996cb432 100644 --- a/src/qtui/chatitem.h +++ b/src/qtui/chatitem.h @@ -162,6 +162,9 @@ protected: virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); + virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); + + virtual QVector additionalFormats() const; -- 2.20.1