diff options
Diffstat (limited to 'libLumina/LuminaUtils.h')
-rw-r--r-- | libLumina/LuminaUtils.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libLumina/LuminaUtils.h b/libLumina/LuminaUtils.h index 3ab741a0..bbb40c38 100644 --- a/libLumina/LuminaUtils.h +++ b/libLumina/LuminaUtils.h @@ -19,6 +19,10 @@ #include <QObject> #include <QTranslator> #include <QApplication> +#include <QMenu> +#include <QMouseEvent> +#include <QSize> +#include <QWidgetAction> class LUtils{ public: @@ -87,4 +91,36 @@ public: }; +//Special subclass for a menu which the user can grab the edges and resize as necessary +// Note: Make sure that you don't set 0pixel contents margins on this menu +// - it needs at least 1 pixel margins for the user to be able to grab it +class ResizeMenu : public QMenu{ + Q_OBJECT +public: + ResizeMenu(QWidget *parent = 0); + virtual ~ResizeMenu(); + + void setContents(QWidget *con); + +private: + enum SideFlag{NONE, TOP, BOTTOM, LEFT, RIGHT}; + SideFlag resizeSide; + QWidget *contents; + QWidgetAction *cAct; + +private slots: + void clearFlags(){ + resizeSide=NONE; + } + +protected: + virtual void mouseMoveEvent(QMouseEvent *ev); + virtual void mousePressEvent(QMouseEvent *ev); + virtual void mouseReleaseEvent(QMouseEvent *ev); + +signals: + void MenuResized(QSize); //Emitted when the menu is manually resized by the user + +}; + #endif |