diff --git a/CHANGELOG.md b/CHANGELOG.md index 46655421283..718318dfbfd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unversioned - Major: Added customizable shortcuts. (#2340) +- Minor: Make animated emote playback speed match browser (Firefox and Chrome) behaviour. (#3506) - Minor: Added middle click split to open in browser (#3356) - Minor: Added new search predicate to filter for messages matching a regex (#3282) - Minor: Add `{channel.name}`, `{channel.id}`, `{stream.game}`, `{stream.title}`, `{my.id}`, `{my.name}` placeholders for commands (#3155) diff --git a/src/messages/Image.cpp b/src/messages/Image.cpp index 1b4f116456c..89e382fc399 100644 --- a/src/messages/Image.cpp +++ b/src/messages/Image.cpp @@ -152,8 +152,15 @@ namespace detail { if (reader.read(&image)) { QPixmap::fromImage(image); - - int duration = std::max(20, reader.nextImageDelay()); + // It seems that browsers have special logic for fast animations. + // This implements Chrome and Firefox's behavior which uses + // a duration of 100 ms for any frames that specify a duration of <= 10 ms. + // See http://webkit.org/b/36082 for more information. + // https://github.com/SevenTV/chatterino7/issues/46#issuecomment-1010595231 + int duration = reader.nextImageDelay(); + if (duration <= 10) + duration = 100; + duration = std::max(20, duration); frames.push_back(Frame{image, duration}); } }