From eb809d15722994d4b7a4235544dfc982ba6db987 Mon Sep 17 00:00:00 2001 From: fourtf Date: Tue, 3 Jul 2018 12:07:57 +0200 Subject: [PATCH] Fixes #538 multiple window frames on windows --- chatterino.pro | 3 ++- src/common/Singleton.hpp | 23 +++++++++++++++++++++++ src/widgets/BaseWindow.cpp | 33 ++++++++++++++------------------- src/widgets/BaseWindow.hpp | 1 - 4 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 src/common/Singleton.hpp diff --git a/chatterino.pro b/chatterino.pro index 55514919..96d8bd3a 100644 --- a/chatterino.pro +++ b/chatterino.pro @@ -392,7 +392,8 @@ HEADERS += \ src/singletons/NativeMessaging.hpp \ src/singletons/Theme.hpp \ src/common/SimpleSignalVector.hpp \ - src/common/SignalVector.hpp + src/common/SignalVector.hpp \ + src/common/Singleton.hpp RESOURCES += \ resources/resources.qrc \ diff --git a/src/common/Singleton.hpp b/src/common/Singleton.hpp new file mode 100644 index 00000000..9a1b52c7 --- /dev/null +++ b/src/common/Singleton.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include + +namespace chatterino { + +class Application; + +class Singleton : boost::noncopyable +{ + virtual ~Singleton() = default; + + virtual void initialize(Application &application) + { + (void)(application); + } + + virtual void finalize() + { + } +}; + +} // namespace chatterino diff --git a/src/widgets/BaseWindow.cpp b/src/widgets/BaseWindow.cpp index 4484cab7..62db6006 100644 --- a/src/widgets/BaseWindow.cpp +++ b/src/widgets/BaseWindow.cpp @@ -249,11 +249,11 @@ void BaseWindow::wheelEvent(QWheelEvent *event) if (event->modifiers() & Qt::ControlModifier) { if (event->delta() > 0) { - getApp()->settings->uiScale.setValue(WindowManager::clampUiScale( - getApp()->settings->uiScale.getValue() + 1)); + getApp()->settings->uiScale.setValue( + WindowManager::clampUiScale(getApp()->settings->uiScale.getValue() + 1)); } else { - getApp()->settings->uiScale.setValue(WindowManager::clampUiScale( - getApp()->settings->uiScale.getValue() - 1)); + getApp()->settings->uiScale.setValue( + WindowManager::clampUiScale(getApp()->settings->uiScale.getValue() - 1)); } } } @@ -443,6 +443,16 @@ bool BaseWindow::nativeEvent(const QByteArray &eventType, void *message, long *r this->updateScale(); } + if (!this->shown_ && this->isVisible() && this->hasCustomWindowFrame()) { + this->shown_ = true; + // SetWindowLongPtr((HWND)this->winId(), GWL_STYLE, + // WS_POPUP | WS_CAPTION | WS_THICKFRAME | WS_MAXIMIZEBOX | + // WS_MINIMIZEBOX); + + const MARGINS shadow = {8, 8, 8, 8}; + DwmExtendFrameIntoClientArea(HWND(this->winId()), &shadow); + } + return true; } case WM_NCCALCSIZE: { @@ -609,21 +619,6 @@ bool BaseWindow::nativeEvent(const QByteArray &eventType, void *message, long *r } } -void BaseWindow::showEvent(QShowEvent *event) -{ - if (!this->shown_ && this->isVisible() && this->hasCustomWindowFrame()) { - this->shown_ = true; - // SetWindowLongPtr((HWND)this->winId(), GWL_STYLE, - // WS_POPUP | WS_CAPTION | WS_THICKFRAME | WS_MAXIMIZEBOX | - // WS_MINIMIZEBOX); - - const MARGINS shadow = {8, 8, 8, 8}; - DwmExtendFrameIntoClientArea(HWND(this->winId()), &shadow); - } - - BaseWidget::showEvent(event); -} - void BaseWindow::scaleChangedEvent(float) { this->calcButtonsSizes(); diff --git a/src/widgets/BaseWindow.hpp b/src/widgets/BaseWindow.hpp index 5873ca1a..7646e4f4 100644 --- a/src/widgets/BaseWindow.hpp +++ b/src/widgets/BaseWindow.hpp @@ -47,7 +47,6 @@ public: protected: #ifdef USEWINSDK - virtual void showEvent(QShowEvent *) override; virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result) override; virtual void scaleChangedEvent(float) override; #endif