pineapple-pictures/app/framelesshandler.h
2021-01-04 13:50:09 +08:00

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