37 lines
839 B
C++
37 lines
839 B
C++
#ifndef FRAMELESSHANDLER_H
|
|
#define FRAMELESSHANDLER_H
|
|
|
|
#include <QObject>
|
|
#include <QPoint>
|
|
|
|
// This concept takes from Qt's QWidgetResizeHandler, but it's not
|
|
// a public Qt API so we cannot relay on it...
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QMouseEvent;
|
|
QT_END_NAMESPACE
|
|
|
|
class FramelessHandler : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit FramelessHandler(QWidget *parent = nullptr);
|
|
|
|
protected:
|
|
bool eventFilter(QObject *o, QEvent *event) override;
|
|
|
|
void mouseMoveEvent(QMouseEvent *evt);
|
|
void setMouseCursor(Qt::Edges edge);
|
|
|
|
bool startSystemResize(Qt::Edges edges);
|
|
bool startSystemMove();
|
|
|
|
private:
|
|
QWidget * m_parentWidget = nullptr;
|
|
QPoint m_oldMousePos;
|
|
bool m_clickedOnWindow = false;
|
|
static constexpr int m_borderWidth = 8;
|
|
};
|
|
|
|
#endif // FRAMELESSHANDLER_H
|