-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::addActionsToMenu(QMenu *menu, const QPointF &pos) {
+ Q_UNUSED(pos); // we assume that the current mouse cursor pos is the point of invocation
+
+ if(privateData()->currentClickable.isValid()) {
+ switch(privateData()->currentClickable.type) {
+ case Clickable::Url:
+ privateData()->activeClickable = privateData()->currentClickable;
+ menu->addAction(SmallIcon("edit-copy"), tr("Copy Link Address"),
+ &_actionProxy, SLOT(copyLinkToClipboard()))->setData(QVariant::fromValue<void *>(this));
+ break;
+
+ default:
+ break;