From 8487508eecef5c96848c6a273e87872a2e14a84a Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Sat, 13 Apr 2019 21:06:13 -0400 Subject: Add MenuHelper for better menu behavior. --- ui/menus.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'ui/menus.h') diff --git a/ui/menus.h b/ui/menus.h index 0a455243..b3358304 100644 --- a/ui/menus.h +++ b/ui/menus.h @@ -1,12 +1,15 @@ #pragma once #include +#include +#include #include #include #include #include #include #include "binaryninjaapi.h" +#include "action.h" #include "viewframe.h" class BINARYNINJAUIAPI ContextMenuManager @@ -23,3 +26,39 @@ public: MenuInstance* show(Menu* source, UIActionHandler* handler); bool isActive() { return !m_menu.isNull(); } }; + + +class BINARYNINJAUIAPI MenuHelper: public QLabel +{ + Q_OBJECT + + QPalette::ColorRole m_backgroundRole; + QPalette::ColorRole m_foregroundRole; + QPalette::ColorRole m_activeForegroundRole; + +protected: + Menu m_menu; + ContextMenuManager m_contextMenuManager; + QTimer* m_timer; + +public: + MenuHelper(QWidget* parent); + + void setBackgroundColorRole(QPalette::ColorRole role = QPalette::Highlight); + void setForegroundColorRole(QPalette::ColorRole role = QPalette::WindowText); + void setActiveForegroundColorRole(QPalette::ColorRole role = QPalette::HighlightedText); + +Q_SIGNALS: + void clicked(); + +protected Q_SLOTS: + virtual void showMenu() = 0; + +private Q_SLOTS: + void underMouseTimerEvent(); + +protected: + void enterEvent(QEvent* event) override; + void leaveEvent(QEvent* event) override; + void mouseReleaseEvent(QMouseEvent* event) override; +}; -- cgit v1.3.1