v0.1.0
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
#include "window_helper.h"
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#include "window_helper_macos.h"
|
||||
#elif defined(Q_OS_WIN)
|
||||
#include "window_helper_windows.h"
|
||||
#elif defined(Q_OS_LINUX)
|
||||
#include "window_helper_linux.h"
|
||||
#endif
|
||||
|
||||
void WindowHelper::setupAlwaysOnTopForFullscreen(QWidget *widget)
|
||||
{
|
||||
if (!widget)
|
||||
return;
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
setupMacOS(widget);
|
||||
#elif defined(Q_OS_WIN)
|
||||
setupWindows(widget);
|
||||
#elif defined(Q_OS_LINUX)
|
||||
setupLinux(widget);
|
||||
#endif
|
||||
}
|
||||
|
||||
void WindowHelper::setWindowAlwaysOnTop(QWidget *widget, bool alwaysOnTop)
|
||||
{
|
||||
if (!widget)
|
||||
return;
|
||||
|
||||
Qt::WindowFlags flags = widget->windowFlags();
|
||||
if (alwaysOnTop)
|
||||
{
|
||||
flags |= Qt::WindowStaysOnTopHint;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags &= ~Qt::WindowStaysOnTopHint;
|
||||
}
|
||||
widget->setWindowFlags(flags);
|
||||
widget->show(); // Required to apply new flags
|
||||
}
|
||||
|
||||
void WindowHelper::setWindowClickThrough(QWidget *widget, bool clickThrough)
|
||||
{
|
||||
if (!widget)
|
||||
return;
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
// macOS: Make window ignore mouse events
|
||||
widget->setAttribute(Qt::WA_TransparentForMouseEvents, clickThrough);
|
||||
#elif defined(Q_OS_WIN)
|
||||
// Windows: Will be implemented in Windows helper
|
||||
widget->setAttribute(Qt::WA_TransparentForMouseEvents, clickThrough);
|
||||
#elif defined(Q_OS_LINUX)
|
||||
// Linux: Will be implemented in Linux helper
|
||||
widget->setAttribute(Qt::WA_TransparentForMouseEvents, clickThrough);
|
||||
#endif
|
||||
}
|
||||
|
||||
void WindowHelper::setWindowTransparent(QWidget *widget, bool transparent)
|
||||
{
|
||||
if (!widget)
|
||||
return;
|
||||
|
||||
if (transparent)
|
||||
{
|
||||
widget->setAttribute(Qt::WA_TranslucentBackground);
|
||||
widget->setWindowFlags(widget->windowFlags() | Qt::FramelessWindowHint);
|
||||
}
|
||||
else
|
||||
{
|
||||
widget->setAttribute(Qt::WA_TranslucentBackground, false);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
void WindowHelper::setupMacOS(QWidget *widget)
|
||||
{
|
||||
MacOSWindowHelper::setupAlwaysOnTopForFullscreen(widget);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
void WindowHelper::setupWindows(QWidget *widget)
|
||||
{
|
||||
WindowHelperWindows::setupAlwaysOnTopForFullscreen(widget);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
void WindowHelper::setupLinux(QWidget *widget)
|
||||
{
|
||||
WindowHelperLinux::setupAlwaysOnTopForFullscreen(widget);
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user