diff options
author | tastytea <tastytea@tastytea.de> | 2021-12-27 23:16:26 +0100 |
---|---|---|
committer | tastytea <tastytea@tastytea.de> | 2021-12-27 23:16:26 +0100 |
commit | 850d139e3d9e9d2ee96ea44666d676af28df4a8f (patch) | |
tree | 8fb64c3b44d71466ee5d3678d9d33ec8b15e36ca /src/timeline | |
parent | MxcImageProvider: Only use scaledToHeight if width <= 0. (diff) | |
download | nheko-850d139e3d9e9d2ee96ea44666d676af28df4a8f.tar.xz |
Make custom emoticons twice as high as the font.
Diffstat (limited to 'src/timeline')
-rw-r--r-- | src/timeline/TimelineModel.cpp | 17 |
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)); |