From 391111afe7fa8c9ae70ca0621ac078d1c39045ed Mon Sep 17 00:00:00 2001 From: Nerixyz Date: Tue, 21 May 2024 18:17:28 +0200 Subject: [PATCH 1/7] fix: remove added margins from emote window position --- src/singletons/WindowManager.cpp | 6 +++++- src/widgets/BaseWindow.cpp | 17 ++++++++++++++++- src/widgets/BaseWindow.hpp | 6 +++++- src/widgets/dialogs/EmotePopup.cpp | 15 +++++++++++++-- src/widgets/dialogs/EmotePopup.hpp | 5 +++++ 5 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/singletons/WindowManager.cpp b/src/singletons/WindowManager.cpp index 63bc63b366b..ed07c06de4d 100644 --- a/src/singletons/WindowManager.cpp +++ b/src/singletons/WindowManager.cpp @@ -335,7 +335,11 @@ QPoint WindowManager::emotePopupPos() void WindowManager::setEmotePopupPos(QPoint pos) { - this->emotePopupPos_ = pos; + if (this->emotePopupPos_ != pos) + { + this->emotePopupPos_ = pos; + this->queueSave(); + } } void WindowManager::initialize(Settings &settings, const Paths &paths) diff --git a/src/widgets/BaseWindow.cpp b/src/widgets/BaseWindow.cpp index f3a2afa151a..c4264c0a4b2 100644 --- a/src/widgets/BaseWindow.cpp +++ b/src/widgets/BaseWindow.cpp @@ -29,7 +29,9 @@ # pragma comment(lib, "Dwmapi.lib") # include +# include # include +# include #endif #include "widgets/helper/TitlebarButton.hpp" @@ -444,7 +446,7 @@ QWidget *BaseWindow::getLayoutContainer() } } -bool BaseWindow::hasCustomWindowFrame() +bool BaseWindow::hasCustomWindowFrame() const { return BaseWindow::supportsCustomWindowFrame() && this->enableCustomFrame_; } @@ -460,6 +462,19 @@ bool BaseWindow::supportsCustomWindowFrame() #endif } +QPoint BaseWindow::realPos() const +{ +#ifdef USEWINSDK + if (this->hasCustomWindowFrame()) + { + // Qt subtracts invisible margins from the position but doesn't realize we don't have any margins. + auto margins = this->windowHandle()->frameMargins(); + return this->pos() + QPoint(margins.left(), margins.top()); + } +#endif + return this->pos(); +} + void BaseWindow::themeChangedEvent() { if (this->hasCustomWindowFrame()) diff --git a/src/widgets/BaseWindow.hpp b/src/widgets/BaseWindow.hpp index 46ff56e7e38..2c4bfc6ffba 100644 --- a/src/widgets/BaseWindow.hpp +++ b/src/widgets/BaseWindow.hpp @@ -49,7 +49,7 @@ class BaseWindow : public BaseWidget QRect getBounds(); QWidget *getLayoutContainer(); - bool hasCustomWindowFrame(); + bool hasCustomWindowFrame() const; TitleBarButton *addTitleBarButton(const TitleBarButtonStyle &style, std::function onClicked); EffectLabel *addTitleBarLabel(std::function onClicked); @@ -88,6 +88,10 @@ class BaseWindow : public BaseWidget static bool supportsCustomWindowFrame(); + /// @returns The actual position of this window with invisible margins + /// removed for frameless windows. + QPoint realPos() const; + signals: void topMostChanged(bool topMost); diff --git a/src/widgets/dialogs/EmotePopup.cpp b/src/widgets/dialogs/EmotePopup.cpp index fd80d7e956b..10ab3fe387a 100644 --- a/src/widgets/dialogs/EmotePopup.cpp +++ b/src/widgets/dialogs/EmotePopup.cpp @@ -594,10 +594,21 @@ void EmotePopup::filterEmotes(const QString &searchText) this->searchView_->show(); } +void EmotePopup::savePosition() const +{ + getIApp()->getWindows()->setEmotePopupPos(this->realPos()); +} + +void EmotePopup::moveEvent(QMoveEvent *event) +{ + this->savePosition(); + BasePopup::moveEvent(event); +} + void EmotePopup::closeEvent(QCloseEvent *event) { - getIApp()->getWindows()->setEmotePopupPos(this->pos()); - BaseWindow::closeEvent(event); + this->savePosition(); + BasePopup::closeEvent(event); } } // namespace chatterino diff --git a/src/widgets/dialogs/EmotePopup.hpp b/src/widgets/dialogs/EmotePopup.hpp index 43dbb45c626..e50286b3e31 100644 --- a/src/widgets/dialogs/EmotePopup.hpp +++ b/src/widgets/dialogs/EmotePopup.hpp @@ -25,6 +25,9 @@ class EmotePopup : public BasePopup pajlada::Signals::Signal linkClicked; +protected: + void moveEvent(QMoveEvent *event) override; + private: ChannelView *globalEmotesView_{}; ChannelView *channelEmotesView_{}; @@ -47,6 +50,8 @@ class EmotePopup : public BasePopup void filterEmotes(const QString &text); void addShortcuts() override; bool eventFilter(QObject *object, QEvent *event) override; + + void savePosition() const; }; } // namespace chatterino From b27ded134a0149a704fba7a87b0d5c30ad930b69 Mon Sep 17 00:00:00 2001 From: Nerixyz Date: Tue, 21 May 2024 20:37:54 +0200 Subject: [PATCH 2/7] chore: add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fb4f7e5781..1ad498f66df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Minor: Colored usernames now update on the fly when changing the "Color @usernames" setting. (#5300) - Minor: Added `flags.action` filter variable, allowing you to filter on `/me` messages. (#5397) - Bugfix: If a network request errors with 200 OK, Qt's error code is now reported instead of the HTTP status. (#5378) +- Bugfix: Fixed bugs where the emote popup wouldn't remember its position when restarting. (#5415) - Dev: Use Qt's high DPI scaling. (#4868, #5400) - Dev: Add doxygen build target. (#5377) - Dev: Make printing of strings in tests easier. (#5379) From 015b91691c18b255b3414cdca428b0fca9894830 Mon Sep 17 00:00:00 2001 From: Nerixyz Date: Tue, 21 May 2024 22:18:58 +0200 Subject: [PATCH 3/7] feat: store size of emote window --- src/common/WindowDescriptors.cpp | 12 ++++-- src/common/WindowDescriptors.hpp | 2 +- src/singletons/WindowManager.cpp | 36 ++++++++++-------- src/singletons/WindowManager.hpp | 6 +-- src/util/WidgetHelpers.cpp | 60 ++++++++++++++++++++++++------ src/util/WidgetHelpers.hpp | 8 ++++ src/widgets/BaseWindow.cpp | 18 ++------- src/widgets/BaseWindow.hpp | 8 +--- src/widgets/dialogs/EmotePopup.cpp | 22 ++++++++--- src/widgets/dialogs/EmotePopup.hpp | 3 +- 10 files changed, 114 insertions(+), 61 deletions(-) diff --git a/src/common/WindowDescriptors.cpp b/src/common/WindowDescriptors.cpp index e08069b2cc4..6c02d5c9522 100644 --- a/src/common/WindowDescriptors.cpp +++ b/src/common/WindowDescriptors.cpp @@ -219,9 +219,15 @@ WindowLayout WindowLayout::loadFromFile(const QString &path) } // Load emote popup position - QJsonObject emote_popup_obj = windowObj.value("emotePopup").toObject(); - layout.emotePopupPos_ = QPoint(emote_popup_obj.value("x").toInt(), - emote_popup_obj.value("y").toInt()); + { + auto emotePopup = windowObj["emotePopup"].toObject(); + layout.emotePopupBounds_ = QRect{ + emotePopup["x"].toInt(), + emotePopup["y"].toInt(), + emotePopup["width"].toInt(), + emotePopup["height"].toInt(), + }; + } layout.windows_.emplace_back(std::move(window)); } diff --git a/src/common/WindowDescriptors.hpp b/src/common/WindowDescriptors.hpp index b35edf1554e..9964940ca39 100644 --- a/src/common/WindowDescriptors.hpp +++ b/src/common/WindowDescriptors.hpp @@ -98,7 +98,7 @@ class WindowLayout { public: // A complete window layout has a single emote popup position that is shared among all windows - QPoint emotePopupPos_; + QRect emotePopupBounds_; std::vector windows_; diff --git a/src/singletons/WindowManager.cpp b/src/singletons/WindowManager.cpp index ed07c06de4d..69586928883 100644 --- a/src/singletons/WindowManager.cpp +++ b/src/singletons/WindowManager.cpp @@ -328,16 +328,16 @@ void WindowManager::scrollToMessage(const MessagePtr &message) this->scrollToMessageSignal.invoke(message); } -QPoint WindowManager::emotePopupPos() +QRect WindowManager::emotePopupBounds() const { - return this->emotePopupPos_; + return this->emotePopupBounds_; } -void WindowManager::setEmotePopupPos(QPoint pos) +void WindowManager::setEmotePopupBounds(QRect bounds) { - if (this->emotePopupPos_ != pos) + if (this->emotePopupBounds_ != bounds) { - this->emotePopupPos_ = pos; + this->emotePopupBounds_ = bounds; this->queueSave(); } } @@ -375,7 +375,7 @@ void WindowManager::initialize(Settings &settings, const Paths &paths) windowLayout.activateOrAddChannel(desired->provider, desired->name); } - this->emotePopupPos_ = windowLayout.emotePopupPos_; + this->emotePopupBounds_ = windowLayout.emotePopupBounds_; this->applyWindowLayout(windowLayout); } @@ -487,10 +487,12 @@ void WindowManager::save() windowObj.insert("width", rect.width()); windowObj.insert("height", rect.height()); - QJsonObject emotePopupObj; - emotePopupObj.insert("x", this->emotePopupPos_.x()); - emotePopupObj.insert("y", this->emotePopupPos_.y()); - windowObj.insert("emotePopup", emotePopupObj); + windowObj["emotePopup"] = QJsonObject{ + {"x", this->emotePopupBounds_.x()}, + {"y", this->emotePopupBounds_.y()}, + {"width", this->emotePopupBounds_.width()}, + {"height", this->emotePopupBounds_.height()}, + }; // window tabs QJsonArray tabsArr; @@ -757,7 +759,7 @@ void WindowManager::applyWindowLayout(const WindowLayout &layout) } // Set emote popup position - this->emotePopupPos_ = layout.emotePopupPos_; + this->emotePopupBounds_ = layout.emotePopupBounds_; for (const auto &windowData : layout.windows_) { @@ -806,10 +808,14 @@ void WindowManager::applyWindowLayout(const WindowLayout &layout) // Have to offset x by one because qt moves the window 1px too // far to the left:w - window.setInitialBounds({windowData.geometry_.x(), - windowData.geometry_.y(), - windowData.geometry_.width(), - windowData.geometry_.height()}); + window.setInitialBounds( + { + windowData.geometry_.x(), + windowData.geometry_.y(), + windowData.geometry_.width(), + windowData.geometry_.height(), + }, + widgets::BoundsChecking::Off); } } diff --git a/src/singletons/WindowManager.hpp b/src/singletons/WindowManager.hpp index 927a5712977..21040fab094 100644 --- a/src/singletons/WindowManager.hpp +++ b/src/singletons/WindowManager.hpp @@ -99,8 +99,8 @@ class WindowManager final : public Singleton */ void scrollToMessage(const MessagePtr &message); - QPoint emotePopupPos(); - void setEmotePopupPos(QPoint pos); + QRect emotePopupBounds() const; + void setEmotePopupBounds(QRect bounds); void initialize(Settings &settings, const Paths &paths) override; void save() override; @@ -154,7 +154,7 @@ class WindowManager final : public Singleton bool initialized_ = false; bool shuttingDown_ = false; - QPoint emotePopupPos_; + QRect emotePopupBounds_; std::atomic generation_{0}; diff --git a/src/util/WidgetHelpers.cpp b/src/util/WidgetHelpers.cpp index b5e6fa9a303..cd76dea8091 100644 --- a/src/util/WidgetHelpers.cpp +++ b/src/util/WidgetHelpers.cpp @@ -8,8 +8,7 @@ namespace { -/// Move the `window` into the `screen` geometry if it's not already in there. -void moveWithinScreen(QWidget *window, QScreen *screen, QPoint point) +QPoint applyBounds(QScreen *screen, QPoint point, QSize frameSize, int height) { if (screen == nullptr) { @@ -21,9 +20,6 @@ void moveWithinScreen(QWidget *window, QScreen *screen, QPoint point) bool stickRight = false; bool stickBottom = false; - const auto w = window->frameGeometry().width(); - const auto h = window->frameGeometry().height(); - if (point.x() < bounds.left()) { point.setX(bounds.left()); @@ -32,30 +28,72 @@ void moveWithinScreen(QWidget *window, QScreen *screen, QPoint point) { point.setY(bounds.top()); } - if (point.x() + w > bounds.right()) + if (point.x() + frameSize.width() > bounds.right()) { stickRight = true; - point.setX(bounds.right() - w); + point.setX(bounds.right() - frameSize.width()); } - if (point.y() + h > bounds.bottom()) + if (point.y() + frameSize.height() > bounds.bottom()) { stickBottom = true; - point.setY(bounds.bottom() - h); + point.setY(bounds.bottom() - frameSize.height()); } if (stickRight && stickBottom) { const QPoint globalCursorPos = QCursor::pos(); - point.setY(globalCursorPos.y() - window->height() - 16); + point.setY(globalCursorPos.y() - height - 16); } - window->move(point); + return point; +} + +/// Move the `window` into the `screen` geometry if it's not already in there. +void moveWithinScreen(QWidget *window, QScreen *screen, QPoint point) +{ + auto checked = + applyBounds(screen, point, window->frameSize(), window->height()); + window->move(checked); } } // namespace namespace chatterino::widgets { +QRect checkInitialBounds(QRect initialBounds, BoundsChecking mode) +{ + switch (mode) + { + case BoundsChecking::Off: { + return initialBounds; + } + break; + + case BoundsChecking::CursorPosition: { + return QRect{ + applyBounds(QGuiApplication::screenAt(QCursor::pos()), + initialBounds.topLeft(), initialBounds.size(), + initialBounds.height()), + initialBounds.size(), + }; + } + break; + + case BoundsChecking::DesiredPosition: { + return QRect{ + applyBounds(QGuiApplication::screenAt(initialBounds.topLeft()), + initialBounds.topLeft(), initialBounds.size(), + initialBounds.height()), + initialBounds.size(), + }; + } + break; + default: + assert(false && "Invalid bounds checking mode"); + return initialBounds; + } +} + void moveWindowTo(QWidget *window, QPoint position, BoundsChecking mode) { switch (mode) diff --git a/src/util/WidgetHelpers.hpp b/src/util/WidgetHelpers.hpp index b09e93d0b95..46cf622bd12 100644 --- a/src/util/WidgetHelpers.hpp +++ b/src/util/WidgetHelpers.hpp @@ -17,6 +17,14 @@ enum class BoundsChecking { DesiredPosition, }; +/// Applies bounds checking to @a initialBounds. +/// +/// @param initialBounds The bounds to check. +/// @param mode The desired bounds checking. +/// @returns The potentially modified bounds. +QRect checkInitialBounds(QRect initialBounds, + BoundsChecking mode = BoundsChecking::DesiredPosition); + /// Moves the `window` to the (global) `position` /// while doing bounds-checking according to `mode` to ensure the window stays on one screen. /// diff --git a/src/widgets/BaseWindow.cpp b/src/widgets/BaseWindow.cpp index c4264c0a4b2..6d880067ec9 100644 --- a/src/widgets/BaseWindow.cpp +++ b/src/widgets/BaseWindow.cpp @@ -253,8 +253,9 @@ BaseWindow::~BaseWindow() DebugCount::decrease("BaseWindow"); } -void BaseWindow::setInitialBounds(const QRect &bounds) +void BaseWindow::setInitialBounds(QRect bounds, widgets::BoundsChecking mode) { + bounds = widgets::checkInitialBounds(bounds, mode); #ifdef USEWINSDK this->initalBounds_ = bounds; #else @@ -262,7 +263,7 @@ void BaseWindow::setInitialBounds(const QRect &bounds) #endif } -QRect BaseWindow::getBounds() +QRect BaseWindow::getBounds() const { #ifdef USEWINSDK return this->currentBounds_; @@ -462,19 +463,6 @@ bool BaseWindow::supportsCustomWindowFrame() #endif } -QPoint BaseWindow::realPos() const -{ -#ifdef USEWINSDK - if (this->hasCustomWindowFrame()) - { - // Qt subtracts invisible margins from the position but doesn't realize we don't have any margins. - auto margins = this->windowHandle()->frameMargins(); - return this->pos() + QPoint(margins.left(), margins.top()); - } -#endif - return this->pos(); -} - void BaseWindow::themeChangedEvent() { if (this->hasCustomWindowFrame()) diff --git a/src/widgets/BaseWindow.hpp b/src/widgets/BaseWindow.hpp index 2c4bfc6ffba..946c9e24543 100644 --- a/src/widgets/BaseWindow.hpp +++ b/src/widgets/BaseWindow.hpp @@ -45,8 +45,8 @@ class BaseWindow : public BaseWidget QWidget *parent = nullptr); ~BaseWindow() override; - void setInitialBounds(const QRect &bounds); - QRect getBounds(); + void setInitialBounds(QRect bounds, widgets::BoundsChecking mode); + QRect getBounds() const; QWidget *getLayoutContainer(); bool hasCustomWindowFrame() const; @@ -88,10 +88,6 @@ class BaseWindow : public BaseWidget static bool supportsCustomWindowFrame(); - /// @returns The actual position of this window with invisible margins - /// removed for frameless windows. - QPoint realPos() const; - signals: void topMostChanged(bool topMost); diff --git a/src/widgets/dialogs/EmotePopup.cpp b/src/widgets/dialogs/EmotePopup.cpp index 10ab3fe387a..488b4b6f678 100644 --- a/src/widgets/dialogs/EmotePopup.cpp +++ b/src/widgets/dialogs/EmotePopup.cpp @@ -208,8 +208,12 @@ EmotePopup::EmotePopup(QWidget *parent) , notebook_(new Notebook(this)) { // this->setStayInScreenRect(true); - this->moveTo(getIApp()->getWindows()->emotePopupPos(), - widgets::BoundsChecking::DesiredPosition); + auto bounds = getIApp()->getWindows()->emotePopupBounds(); + if (bounds.size().isEmpty()) + { + bounds.setSize({300, 500}); + } + this->setInitialBounds(bounds, widgets::BoundsChecking::DesiredPosition); auto *layout = new QVBoxLayout(); this->getLayoutContainer()->setLayout(layout); @@ -594,20 +598,26 @@ void EmotePopup::filterEmotes(const QString &searchText) this->searchView_->show(); } -void EmotePopup::savePosition() const +void EmotePopup::saveBounds() const +{ + getIApp()->getWindows()->setEmotePopupBounds(this->getBounds()); +} + +void EmotePopup::resizeEvent(QResizeEvent *event) { - getIApp()->getWindows()->setEmotePopupPos(this->realPos()); + this->saveBounds(); + BasePopup::resizeEvent(event); } void EmotePopup::moveEvent(QMoveEvent *event) { - this->savePosition(); + this->saveBounds(); BasePopup::moveEvent(event); } void EmotePopup::closeEvent(QCloseEvent *event) { - this->savePosition(); + this->saveBounds(); BasePopup::closeEvent(event); } diff --git a/src/widgets/dialogs/EmotePopup.hpp b/src/widgets/dialogs/EmotePopup.hpp index e50286b3e31..85b5aa5c4f2 100644 --- a/src/widgets/dialogs/EmotePopup.hpp +++ b/src/widgets/dialogs/EmotePopup.hpp @@ -26,6 +26,7 @@ class EmotePopup : public BasePopup pajlada::Signals::Signal linkClicked; protected: + void resizeEvent(QResizeEvent *event) override; void moveEvent(QMoveEvent *event) override; private: @@ -51,7 +52,7 @@ class EmotePopup : public BasePopup void addShortcuts() override; bool eventFilter(QObject *object, QEvent *event) override; - void savePosition() const; + void saveBounds() const; }; } // namespace chatterino From 680a281af4fb7a2b4dd6d3025febc422db98aec3 Mon Sep 17 00:00:00 2001 From: Nerixyz Date: Tue, 21 May 2024 22:19:50 +0200 Subject: [PATCH 4/7] chore: update changelog entry --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ad498f66df..519b291e52d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,8 @@ - Minor: Add option to customise Moderation buttons with images. (#5369) - Minor: Colored usernames now update on the fly when changing the "Color @usernames" setting. (#5300) - Minor: Added `flags.action` filter variable, allowing you to filter on `/me` messages. (#5397) +- Minor: The size of the emote popup is now saved. (#5415) - Bugfix: If a network request errors with 200 OK, Qt's error code is now reported instead of the HTTP status. (#5378) -- Bugfix: Fixed bugs where the emote popup wouldn't remember its position when restarting. (#5415) - Dev: Use Qt's high DPI scaling. (#4868, #5400) - Dev: Add doxygen build target. (#5377) - Dev: Make printing of strings in tests easier. (#5379) From 6727453390bd5b4f860565e3f76a511cc307d9ec Mon Sep 17 00:00:00 2001 From: Nerixyz Date: Tue, 21 May 2024 22:21:47 +0200 Subject: [PATCH 5/7] fix: disable layout save --- src/widgets/dialogs/EmotePopup.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/widgets/dialogs/EmotePopup.cpp b/src/widgets/dialogs/EmotePopup.cpp index 488b4b6f678..9b58ce5207b 100644 --- a/src/widgets/dialogs/EmotePopup.cpp +++ b/src/widgets/dialogs/EmotePopup.cpp @@ -203,7 +203,8 @@ EmoteMap filterEmoteMap(const QString &text, namespace chatterino { EmotePopup::EmotePopup(QWidget *parent) - : BasePopup(BaseWindow::EnableCustomFrame, parent) + : BasePopup({BaseWindow::EnableCustomFrame, BaseWindow::DisableLayoutSave}, + parent) , search_(new QLineEdit()) , notebook_(new Notebook(this)) { From 140ed27e7e08792856ca4db3bff2aa7d5499e0e2 Mon Sep 17 00:00:00 2001 From: Nerixyz Date: Tue, 21 May 2024 22:34:34 +0200 Subject: [PATCH 6/7] fix: PCH moment --- src/util/WidgetHelpers.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/util/WidgetHelpers.hpp b/src/util/WidgetHelpers.hpp index 46cf622bd12..5de90340ffc 100644 --- a/src/util/WidgetHelpers.hpp +++ b/src/util/WidgetHelpers.hpp @@ -3,6 +3,7 @@ class QWidget; class QPoint; class QScreen; +class QRect; namespace chatterino::widgets { From 95f4b2b8b0a4c0cb9e1d31251e776c9fe89b02a7 Mon Sep 17 00:00:00 2001 From: Nerixyz Date: Sat, 25 May 2024 17:47:00 +0200 Subject: [PATCH 7/7] fix: multiply by scale --- src/widgets/dialogs/EmotePopup.cpp | 2 +- src/widgets/splits/SplitInput.cpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/widgets/dialogs/EmotePopup.cpp b/src/widgets/dialogs/EmotePopup.cpp index 9b58ce5207b..989233ff7e2 100644 --- a/src/widgets/dialogs/EmotePopup.cpp +++ b/src/widgets/dialogs/EmotePopup.cpp @@ -212,7 +212,7 @@ EmotePopup::EmotePopup(QWidget *parent) auto bounds = getIApp()->getWindows()->emotePopupBounds(); if (bounds.size().isEmpty()) { - bounds.setSize({300, 500}); + bounds.setSize(QSize{300, 500} * this->scale()); } this->setInitialBounds(bounds, widgets::BoundsChecking::DesiredPosition); diff --git a/src/widgets/splits/SplitInput.cpp b/src/widgets/splits/SplitInput.cpp index d53b4bad991..141eeed5e6b 100644 --- a/src/widgets/splits/SplitInput.cpp +++ b/src/widgets/splits/SplitInput.cpp @@ -309,8 +309,6 @@ void SplitInput::openEmotePopup() }); } - this->emotePopup_->resize(int(300 * this->emotePopup_->scale()), - int(500 * this->emotePopup_->scale())); this->emotePopup_->loadChannel(this->split_->getChannel()); this->emotePopup_->show(); this->emotePopup_->raise();