diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index 28d0e43d..8337786d 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -25,6 +25,8 @@ public: /// Appearance BoolSetting showTimestamps = {"/appearance/messages/showTimestamps", true}; + BoolSetting enableAnimationsWhenFocused = { + "/appearance/enableAnimationsWhenFocused", false}; QStringSetting timestampFormat = {"/appearance/messages/timestampFormat", "h:mm"}; BoolSetting showBadges = {"/appearance/messages/showBadges", true}; diff --git a/src/singletons/helper/GifTimer.cpp b/src/singletons/helper/GifTimer.cpp index 8ef657e7..8f362452 100644 --- a/src/singletons/helper/GifTimer.cpp +++ b/src/singletons/helper/GifTimer.cpp @@ -11,18 +11,19 @@ void GIFTimer::initialize() this->timer.setInterval(30); getSettings()->enableGifAnimations.connect([this](bool enabled, auto) { - if (enabled) { + if (enabled) this->timer.start(); - } else { + else this->timer.stop(); - } }); QObject::connect(&this->timer, &QTimer::timeout, [this] { + if (getSettings()->enableAnimationsWhenFocused && + qApp->activeWindow() == nullptr) + return; + this->signal.invoke(); - // fourtf: - auto app = getApp(); - app->windows->repaintGifEmotes(); + getApp()->windows->repaintGifEmotes(); }); } diff --git a/src/widgets/settingspages/LookPage.cpp b/src/widgets/settingspages/LookPage.cpp index 4db67149..eb2a9ff1 100644 --- a/src/widgets/settingspages/LookPage.cpp +++ b/src/widgets/settingspages/LookPage.cpp @@ -218,6 +218,9 @@ void LookPage::addEmoteTab(LayoutCreator layout) */ layout.append( this->createCheckBox("Animations", getSettings()->enableGifAnimations)); + layout.append( + this->createCheckBox("Animations only when chatterino has focus", + getSettings()->enableAnimationsWhenFocused)); auto scaleBox = layout.emplace().withoutMargin(); {