diff options
Diffstat (limited to 'muse2/muse/widgets/popupmenu.h')
-rw-r--r-- | muse2/muse/widgets/popupmenu.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/muse2/muse/widgets/popupmenu.h b/muse2/muse/widgets/popupmenu.h index c06d51f4..4982d199 100644 --- a/muse2/muse/widgets/popupmenu.h +++ b/muse2/muse/widgets/popupmenu.h @@ -11,7 +11,15 @@ #ifndef __POPUPMENU_H__ #define __POPUPMENU_H__ +// Just in case Qt ever adds these features natively, we would need to turn our features off! +//#define POPUP_MENU_DISABLE_STAY_OPEN +//#define POPUP_MENU_DISABLE_AUTO_SCROLL + #include <QMenu> +#ifndef POPUP_MENU_DISABLE_AUTO_SCROLL + #include <QTimer> +#endif + //#include <QMouseEvent> //#include <QColumnView> @@ -19,20 +27,40 @@ class QWidget; class QMouseEvent; class QVariant; class QAction; +class QEvent; +//class QTimer; //class QStandardItemModel; class PopupMenu : public QMenu { Q_OBJECT + bool _stayOpen; + #ifndef POPUP_MENU_DISABLE_AUTO_SCROLL + QTimer* timer; + #endif + int moveDelta; + void init(); + + private slots: + #ifndef POPUP_MENU_DISABLE_AUTO_SCROLL + void popHovered(QAction*); + void timerHandler(); + #endif + protected: void mouseReleaseEvent(QMouseEvent *); + bool event(QEvent*); public: - PopupMenu(QWidget* parent=0); + //PopupMenu(); + PopupMenu(bool stayOpen); + PopupMenu(QWidget* parent=0, bool stayOpen = false); + PopupMenu(const QString& title, QWidget* parent = 0, bool stayOpen = false); ~PopupMenu(); void clear(); QAction* findActionFromData(QVariant); + bool stayOpen() { return _stayOpen; } }; |