#define ACTION_H
#include <QAction>
+#include <memory>
+
+class QIcon;
namespace lyx {
namespace frontend {
-class GuiViewBase;
-
/**
* Action - Qt interface with LyX' FuncRequest.
*
Q_OBJECT
public:
- Action(GuiViewBase & lyxView, QString const & icon, QString const & text,
- FuncRequest const & func, QString const & tooltip);
+ // Makes a copy of func
+ Action(FuncRequest func, QIcon const & icon, QString const & text,
+ QString const & tooltip, QObject * parent);
+
+ // Takes shared ownership of func.
+ // Use for perf-sensitive code such as populating menus.
+ Action(std::shared_ptr<FuncRequest const> func,
+ QIcon const & icon, QString const & text,
+ QString const & tooltip, QObject * parent);
void update();
void action();
private:
- FuncRequest const & func_ ;
- GuiViewBase & lyxView_;
+ void init(QIcon const & icon, QString const & text, QString const & tooltip);
+ std::shared_ptr<FuncRequest const> func_;
};