#include "Action.h"
+// DispatchResult.h is needed by the windows compiler because lyx::dispatch
+// returns a DispatchResult const reference. Gcc does not complain. Weird...
+#include "DispatchResult.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
-#include "GuiView.h"
#include "LyX.h"
+
#include "qt_helpers.h"
#include "support/debug.h"
#include "support/lstrings.h"
+using namespace std;
+
+
namespace lyx {
namespace frontend {
-Action::Action(GuiView * lyxView, QIcon const & icon,
- QString const & text, FuncRequest const & func,
- QString const & tooltip, QObject * parent)
- : QAction(parent), func_(func), lyxView_(lyxView)
+Action::Action(FuncRequest func, QIcon const & icon, QString const & text,
+ QString const & tooltip, QObject * parent)
+ : QAction(parent), func_(make_shared<FuncRequest>(move(func)))
+{
+ init(icon, text, tooltip);
+}
+
+
+Action::Action(shared_ptr<FuncRequest const> func,
+ QIcon const & icon, QString const & text,
+ QString const & tooltip, QObject * parent)
+ : QAction(parent), func_(func)
+{
+ init(icon, text, tooltip);
+}
+
+
+void Action::init(QIcon const & icon, QString const & text,
+ QString const & tooltip)
{
// only Qt/Mac handles that
setMenuRole(NoRole);
void Action::update()
{
- FuncStatus const status = getStatus(func_);
+ FuncStatus const status = getStatus(*func_);
if (status.onOff(true)) {
setCheckable(true);
{
//LYXERR(Debug::ACTION, "calling lyx::dispatch: func_: ");
- lyx::dispatch(func_);
+ lyx::dispatch(*func_);
triggered(this);
}