X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatwidget.cpp;fp=src%2Fqtui%2Fchatwidget.cpp;h=722f502aadd017febe93c4f7045f5b1813b9b66c;hp=ced9b6b11a26cf832150dbe881f89a7a13af43c3;hb=d6eb319df23ce7e4ddf484d9e21620db61d8ad0f;hpb=e7696b65e76e50137b8bab0ec3e43ce66a94f190 diff --git a/src/qtui/chatwidget.cpp b/src/qtui/chatwidget.cpp index ced9b6b1..722f502a 100644 --- a/src/qtui/chatwidget.cpp +++ b/src/qtui/chatwidget.cpp @@ -335,10 +335,42 @@ void ChatWidget::mousePressEvent(QMouseEvent *event) { } } -void ChatWidget::mouseDoubleClickEvent(QMouseEvent * /*event*/) { - +void ChatWidget::mouseDoubleClickEvent(QMouseEvent *event) { + // dirty and fast hack to make http:// urls klickable + if(lines.isEmpty()) + return; + QPoint pos = event->pos() + QPoint(0, verticalScrollBar()->value()); + int x = pos.x(); + int y = pos.y(); + int l = yToLineIdx(y); + if(lines.count() <= l) + return; + + ChatLine *line = lines[l]; + QString text = line->text(); + int cursorAt = qMax(0, line->posToCursor(QPointF(x, y - ycoords[l])) - 1); + + int start = 0; + if(cursorAt > 0) { + for(int i = cursorAt; i > 0; i--) { + if(text[i] == ' ') { + start = i + 1; + break; + } + } + } + int end = text.indexOf(" ", start); + int len = -1; + if(end != -1) { + len = end - start; + } + QString word = text.mid(start, len); + if(word.startsWith("http://")) { + QDesktopServices::openUrl(QUrl(word)); + } + } void ChatWidget::mouseReleaseEvent(QMouseEvent *event) {