summary refs log tree commit diff
path: root/src/timeline
diff options
context:
space:
mode:
authortastytea <tastytea@tastytea.de>2021-12-27 23:16:26 +0100
committertastytea <tastytea@tastytea.de>2021-12-27 23:16:26 +0100
commit850d139e3d9e9d2ee96ea44666d676af28df4a8f (patch)
tree8fb64c3b44d71466ee5d3678d9d33ec8b15e36ca /src/timeline
parentMxcImageProvider: Only use scaledToHeight if width <= 0. (diff)
downloadnheko-850d139e3d9e9d2ee96ea44666d676af28df4a8f.tar.xz
Make custom emoticons twice as high as the font.
Diffstat (limited to 'src/timeline')
-rw-r--r--src/timeline/TimelineModel.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 9696dffb..0bec9505 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -561,25 +561,28 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r
         }
 
         // TODO(Nico): Don't parse html with a regex
-        const static QRegularExpression matchEmoticonHeight(
-          "(<img data-mx-emoticon [^>]*)height=\"([^\"]*)\"([^>]*>)");
-        formattedBody_.replace(matchEmoticonHeight, QString("\\1 height=\"%1\"\\3").arg(ascent));
-
         const static QRegularExpression matchIsImg("<img [^>]+>");
         auto itIsImg = matchIsImg.globalMatch(formattedBody_);
         while (itIsImg.hasNext()) {
+            // The current <img> tag.
             const QString curImg = itIsImg.next().captured(0);
+            // The replacement for the current <img>.
+            auto imgReplacement = curImg;
 
             // Construct image parameters later used by MxcImageProvider.
             QString imgParams;
             if (curImg.contains("height")) {
-                const static QRegularExpression matchImgHeight("height=[\"\']?(\\d+)[\"\']?");
-                const auto height = matchImgHeight.match(curImg).captured(1).toInt();
+                const static QRegularExpression matchImgHeight("height=([\"\']?)(\\d+)([\"\']?)");
+                // Make emoticons twice as high as the font.
+                if (curImg.contains("data-mx-emoticon")) {
+                    imgReplacement =
+                      imgReplacement.replace(matchImgHeight, "height=\\1%1\\3").arg(ascent * 2);
+                }
+                const auto height = matchImgHeight.match(imgReplacement).captured(2).toInt();
                 imgParams         = QString("?scale&height=%1").arg(height);
             }
 
             // Replace src in current <img>.
-            auto imgReplacement = curImg;
             const static QRegularExpression matchImgUri("src=\"mxc://([^\"]*)\"");
             imgReplacement.replace(matchImgUri,
                                    QString("src=\"image://mxcImage/\\1%1\"").arg(imgParams));