- int col = finder.nextWrapColumn();
- line.setNumColumns(col >= 0 ? col - line.textStart() : layout->text().length());
- line.setPosition(QPointF(0, h));
- h += fontMetrics()->lineSpacing();
- }
- layout->endLayout();
-}
-
-// NOTE: This method is not threadsafe and not reentrant!
-// (RegExps are not constant while matching, and they are static here for efficiency)
-QList<ContentsChatItem::Clickable> ContentsChatItem::findClickables() const {
- // For matching URLs
- static QString urlEnd("(?:>|[,.;:\"]*\\s|\\b|$)");
- static QString urlChars("(?:[,.;:]*[\\w\\-~@/?&=+$()!%#*|{}\\[\\]'])");
-
- static QRegExp regExp[] = {
- // URL
- // QRegExp(QString("((?:https?://|s?ftp://|irc://|mailto:|www\\.)%1+|%1+\\.[a-z]{2,4}(?:?=/%1+|\\b))%2").arg(urlChars, urlEnd)),
- QRegExp(QString("((?:(?:mailto:|\\w+://)|www\\.)%1+)%2").arg(urlChars, urlEnd), Qt::CaseInsensitive),
-
- // Channel name
- // We don't match for channel names starting with + or &, because that gives us a lot of false positives.
- QRegExp("((?:#|![A-Z0-9]{5})[^,:\\s]+(?::[^,:\\s]+)?)\\b", Qt::CaseInsensitive)
+ int col = finder.nextWrapColumn(width());
+ if(col < 0)
+ col = layout->text().length();
+ int num = col - line.textStart();