projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Set QSS-parsed gradients' coordinate system to ObjectBoundingMode
[quassel.git]
/
src
/
uisupport
/
clickable.cpp
diff --git
a/src/uisupport/clickable.cpp
b/src/uisupport/clickable.cpp
index
dcda95f
..
0674d0e
100644
(file)
--- a/
src/uisupport/clickable.cpp
+++ b/
src/uisupport/clickable.cpp
@@
-50,13
+50,15
@@
void Clickable::activate(NetworkId networkId, const QString &text) const {
// (RegExps are not constant while matching, and they are static here for efficiency)
ClickableList ClickableList::fromString(const QString &str) {
// For matching URLs
// (RegExps are not constant while matching, and they are static here for efficiency)
ClickableList ClickableList::fromString(const QString &str) {
// For matching URLs
+ static QString scheme("(?:(?:mailto:|(?:[+.-]?\\w)+://)|www(?=\\.\\S+\\.))");
+ static QString authority("(?:(?:[,.;@:]?[-\\w]+)+\\.?|\\[[0-9a-f:.]+\\])(?::\\d+)?");
+ static QString urlChars("(?:[,.;:]*[\\w~@/?&=+$()!%#*{}\\[\\]\\|'^-])");
static QString urlEnd("(?:>|[,.;:\"]*\\s|\\b|$)");
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)),
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("\\b(
(?:(?:mailto:|\\w+://)|www\\.)%1+)%2").arg(
urlChars, urlEnd), Qt::CaseInsensitive),
+ QRegExp(QString("\\b(
%1%2(?:/%3*)?)%4").arg(scheme, authority,
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.
// Channel name
// We don't match for channel names starting with + or &, because that gives us a lot of false positives.