This patch tries to sanitize a bit the way menus are generated on qt4.
Actions are not made checkable for no reason, and the code to set
action features is moved to Action::update.
JMarc
Index: src/frontends/qt4/Action.C
===================================================================
--- src/frontends/qt4/Action.C (revision 14809)
+++ src/frontends/qt4/Action.C (working copy)
@@ -48,7 +48,7 @@ Action::Action(LyXView & lyxView, string
setToolTip(toqstr(tooltip));
setStatusTip(toqstr(tooltip));
connect(this, SIGNAL(triggered()), this, SLOT(action()));
- this->setCheckable(true);
+ update();
}
Action::Action(LyXView & lyxView, string const & icon, string const & text,
@@ -60,7 +60,7 @@ Action::Action(LyXView & lyxView, string
setToolTip(toqstr(tooltip));
setStatusTip(toqstr(tooltip));
connect(this, SIGNAL(triggered()), this, SLOT(action()));
- this->setCheckable(true);
+ update();
}
/*
@@ -74,8 +74,17 @@ void Action::update()
{
FuncStatus const status = lyxView_.getLyXFunc().getStatus(func_);
- this->setChecked(status.onoff(true));
- this->setEnabled(status.enabled());
+ if (status.onoff(true)) {
+ setCheckable(true);
+ setChecked(true);
+ } else if (status.onoff(false)) {
+ setCheckable(true);
+ setChecked(false);
+ } else {
+ setCheckable(false);
+ }
+
+ setEnabled(status.enabled());
}
Index: src/frontends/qt4/QLPopupMenu.C
===================================================================
--- src/frontends/qt4/QLPopupMenu.C (revision 14809)
+++ src/frontends/qt4/QLPopupMenu.C (working copy)
@@ -114,16 +114,13 @@ void QLPopupMenu::populate(QMenu* qMenu,
} else { // we have a MenuItem::Command
- FuncStatus status = m->status();
lyxerr[Debug::GUI] << "creating Menu Item " << m->label() << endl;
string label = getLabel(*m);
addBinding(label, *m);
- Action * action = new Action(*(owner_->view()), label, m->func());
- action->setEnabled(m->status().enabled());
- action->setChecked(m->status().onoff(true));
- // Actually insert the menu item
+ Action * action = new Action(*(owner_->view()),
+ label, m->func());
qMenu->addAction(action);
}
}