diff --git a/include/MainApplication.h b/include/MainApplication.h index 2f65ba538c4..8d5df9f8696 100644 --- a/include/MainApplication.h +++ b/include/MainApplication.h @@ -25,13 +25,22 @@ #ifndef MAINAPPLICATION_H #define MAINAPPLICATION_H +#include "lmmsconfig.h" + #include +#ifdef LMMS_BUILD_WIN32 +#include +#endif + class MainApplication : public QApplication { public: MainApplication(int& argc, char** argv); bool event(QEvent* event); +#ifdef LMMS_BUILD_WIN32 + bool winEventFilter(MSG* msg, long* result); +#endif inline QString& queuedFile() { return m_queuedFile; diff --git a/src/gui/MainApplication.cpp b/src/gui/MainApplication.cpp index d31cf30589a..767eaa8fef1 100644 --- a/src/gui/MainApplication.cpp +++ b/src/gui/MainApplication.cpp @@ -62,3 +62,27 @@ bool MainApplication::event(QEvent* event) return QApplication::event(event); } } + +#ifdef LMMS_BUILD_WIN32 +bool MainApplication::winEventFilter(MSG* msg, long* result) +{ + switch(msg->message) + { + case WM_STYLECHANGING: + if(msg->wParam == GWL_EXSTYLE) + { + // Prevent plugins making the main window transparent + STYLESTRUCT * style = reinterpret_cast(msg->lParam); + if(!(style->styleOld & WS_EX_LAYERED)) + { + style->styleNew &= ~WS_EX_LAYERED; + } + *result = 0; + return true; + } + return false; + default: + return false; + } +} +#endif