summaryrefslogtreecommitdiff
path: root/muse2/muse/widgets/popupmenu.h
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/widgets/popupmenu.h')
-rw-r--r--muse2/muse/widgets/popupmenu.h34
1 files changed, 32 insertions, 2 deletions
diff --git a/muse2/muse/widgets/popupmenu.h b/muse2/muse/widgets/popupmenu.h
index c06d51f4..e0e7d26f 100644
--- a/muse2/muse/widgets/popupmenu.h
+++ b/muse2/muse/widgets/popupmenu.h
@@ -6,12 +6,21 @@
// (C) Copyright 1999-2010 Werner Schweer (ws@seh.de)
//
// PopupMenu sub-class of QMenu created by Tim.
+// (C) Copyright 2010-2011 Tim E. Real (terminator356 A T sourceforge D O T net)
//=========================================================
#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 +28,41 @@ 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);
+ QAction* findActionFromData(const QVariant&) const;
+ bool stayOpen() const { return _stayOpen; }
+ void clearAllChecks() const;
};