fix: only invalidate buffers for chat windows (#5666)

This commit is contained in:
nerix
2024-10-21 00:57:37 +02:00
committed by GitHub
parent e35fabfabe
commit 867e3f3ab0
6 changed files with 23 additions and 9 deletions
+7 -4
View File
@@ -877,10 +877,13 @@ bool BaseWindow::nativeEvent(const QByteArray &eventType, void *message,
break;
case WM_DPICHANGED: {
// wait for Qt to process this message
postToThread([] {
getApp()->getWindows()->invalidateChannelViewBuffers();
});
if (this->flags_.has(ClearBuffersOnDpiChange))
{
// wait for Qt to process this message
postToThread([] {
getApp()->getWindows()->invalidateChannelViewBuffers();
});
}
}
break;
+1
View File
@@ -37,6 +37,7 @@ public:
Dialog = 1 << 6,
DisableLayoutSave = 1 << 7,
BoundsCheckOnShow = 1 << 8,
ClearBuffersOnDpiChange = 1 << 9,
};
enum ActionOnFocusLoss { Nothing, Delete, Close, Hide };
+3 -3
View File
@@ -36,9 +36,9 @@ namespace {
DraggablePopup::DraggablePopup(bool closeAutomatically, QWidget *parent)
: BaseWindow(
closeAutomatically
? popupFlagsCloseAutomatically | BaseWindow::DisableLayoutSave
: popupFlags | BaseWindow::DisableLayoutSave,
(closeAutomatically ? popupFlagsCloseAutomatically : popupFlags) |
BaseWindow::DisableLayoutSave |
BaseWindow::ClearBuffersOnDpiChange,
parent)
, lifetimeHack_(std::make_shared<bool>(false))
, dragTimer_(this)
+8
View File
@@ -7,6 +7,7 @@
#include "singletons/Emotes.hpp"
#include "singletons/Settings.hpp"
#include "singletons/WindowManager.hpp"
#include "util/PostToThread.hpp"
#include "widgets/BaseWidget.hpp"
#include "widgets/helper/ChannelView.hpp"
#include "widgets/helper/InvisibleSizeGrip.hpp"
@@ -312,6 +313,13 @@ bool OverlayWindow::nativeEvent(const QByteArray &eventType, void *message,
}
break;
# endif
case WM_DPICHANGED: {
// wait for Qt to process this message, same as in BaseWindow
postToThread([] {
getApp()->getWindows()->invalidateChannelViewBuffers();
});
}
break;
default:
return QWidget::nativeEvent(eventType, message, result);
+3 -1
View File
@@ -52,7 +52,9 @@
namespace chatterino {
Window::Window(WindowType type, QWidget *parent)
: BaseWindow(BaseWindow::EnableCustomFrame, parent)
: BaseWindow(
{BaseWindow::EnableCustomFrame, BaseWindow::ClearBuffersOnDpiChange},
parent)
, type_(type)
, notebook_(new SplitNotebook(this))
{