Don't let plugins make the main window transparent (#3809)

* Don't let plugins make the main window transparent

* Don't clear WS_EX_LAYERED if it was already set
This commit is contained in:
Dominic Clark
2017-09-25 22:09:38 +01:00
committed by Umcaruje
parent fb5a58a526
commit dd429c5caf
2 changed files with 33 additions and 0 deletions

View File

@@ -25,13 +25,22 @@
#ifndef MAINAPPLICATION_H
#define MAINAPPLICATION_H
#include "lmmsconfig.h"
#include <QApplication>
#ifdef LMMS_BUILD_WIN32
#include <windows.h>
#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;

View File

@@ -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<STYLESTRUCT *>(msg->lParam);
if(!(style->styleOld & WS_EX_LAYERED))
{
style->styleNew &= ~WS_EX_LAYERED;
}
*result = 0;
return true;
}
return false;
default:
return false;
}
}
#endif