hacked (it's really not pretty) the chatwidget to make http:// links klickable and...
authorMarcus Eggenberger <egs@quassel-irc.org>
Wed, 30 Jan 2008 14:34:16 +0000 (14:34 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Wed, 30 Jan 2008 14:34:16 +0000 (14:34 +0000)
src/qtui/chatwidget.cpp
version.inc

index ced9b6b..722f502 100644 (file)
@@ -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) {
index f6ffdee..84344df 100644 (file)
@@ -5,7 +5,7 @@
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-01-30";
-  quasselBuild = 411;
+  quasselBuild = 413;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 358;