included qca2 into build system
[quassel.git] / src / uisupport / qssparser.cpp
index 1262be7..06e4db2 100644 (file)
@@ -160,7 +160,7 @@ void QssParser::parsePaletteBlock(const QString &decl, const QString &contents)
 /******** Determine format types from a block declaration ********/
 
 quint64 QssParser::parseFormatType(const QString &decl) {
-  QRegExp rx("ChatLine(?:::(\\w+))?(?:#(\\w+))?(?:\\[([=-,\\\"\\w\\s]+)\\])?");
+  QRegExp rx("ChatLine(?:::(\\w+))?(?:#([\\w\\-]+))?(?:\\[([=-,\\\"\\w\\s]+)\\])?");
   // $1: subelement; $2: msgtype; $3: conditionals
   if(!rx.exactMatch(decl)) {
     qWarning() << Q_FUNC_INFO << tr("Invalid block declaration: %1").arg(decl);
@@ -226,6 +226,10 @@ quint64 QssParser::parseFormatType(const QString &decl) {
       fmtType |= UiStyle::DayChangeMsg;
     else if(msgType == "topic")
       fmtType |= UiStyle::TopicMsg;
+    else if(msgType == "netsplit-join")
+      fmtType |= UiStyle::NetsplitJoinMsg;
+    else if(msgType == "netsplit-quit")
+      fmtType |= UiStyle::NetsplitQuitMsg;
     else {
       qWarning() << Q_FUNC_INFO << tr("Invalid message type in %1").arg(decl);
     }
@@ -289,9 +293,9 @@ quint64 QssParser::parseFormatType(const QString &decl) {
           return UiStyle::Invalid;
         }
         if(condName == "fg-color")
-          fmtType |= 0x00400000 | (col << 24);
+          fmtType |= 0x00400000 | (quint32)(col << 24);
         else
-          fmtType |= 0x00800000 | (col << 28);
+          fmtType |= 0x00800000 | (quint32)(col << 28);
       } else {
         qWarning() << Q_FUNC_INFO << tr("Unhandled condition: %1").arg(condName);
         return UiStyle::Invalid;
@@ -462,6 +466,7 @@ QBrush QssParser::parseBrush(const QString &str, bool *ok) {
       return QBrush();
     }
     QLinearGradient gradient(x1, y1, x2, y2);
+    gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
     gradient.setStops(stops);
     if(ok)
       *ok = true;
@@ -483,6 +488,7 @@ QBrush QssParser::parseBrush(const QString &str, bool *ok) {
       return QBrush();
     }
     QConicalGradient gradient(cx, cy, angle);
+    gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
     gradient.setStops(stops);
     if(ok)
       *ok = true;
@@ -506,6 +512,7 @@ QBrush QssParser::parseBrush(const QString &str, bool *ok) {
       return QBrush();
     }
     QRadialGradient gradient(cx, cy, radius, fx, fy);
+    gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
     gradient.setStops(stops);
     if(ok)
       *ok = true;
@@ -658,7 +665,7 @@ void QssParser::parseFontWeight(const QString& value, QTextCharFormat* format) {
 }
 
 void QssParser::parseFontSize(const QString& value, QTextCharFormat* format) {
-  QRegExp rx("\\(d+)(pt|px)");
+  QRegExp rx("(\\d+)(pt|px)");
   if(!rx.exactMatch(value)) {
     qWarning() << Q_FUNC_INFO << tr("Invalid font size specification: %1").arg(value);
     return;