Hi all,
This patch disables all submenus in the menu bar that have no enabled
items.
The code for determining whether a submenu should be enabled is already
present, but it is not used because the following line was missing:
subMenu->setEnabled(m->status().enabled());
However, as there are a lot of submenus (which should be disabled) that
have "No Document Open" items, I'm wondering whether this is a
work-around or whether it is the design to have these submenus always
enabled.
Anyway, this patch also removes all these useless "No Document Open"
menuitems.
Any objections ?
Vincent
Index: src/frontends/qt4/Menus.cpp
===================================================================
--- src/frontends/qt4/Menus.cpp (revision 27986)
+++ src/frontends/qt4/Menus.cpp (working copy)
@@ -715,12 +715,8 @@
void MenuDefinition::expandFormats(MenuItem::Kind kind, Buffer const * buf)
{
- if (!buf && kind != MenuItem::ImportFormats) {
- add(MenuItem(MenuItem::Command,
- qt_("No Document Open!"),
- FuncRequest(LFUN_NOACTION)));
+ if (!buf && kind != MenuItem::ImportFormats)
return;
- }
typedef vector<Format const *> Formats;
Formats formats;
@@ -795,11 +791,8 @@
void MenuDefinition::expandFloatListInsert(Buffer const * buf)
{
- if (!buf) {
- add(MenuItem(MenuItem::Command, qt_("No Document Open!"),
- FuncRequest(LFUN_NOACTION)));
+ if (!buf)
return;
- }
FloatList const & floats = buf->params().documentClass().floats();
FloatList::const_iterator cit = floats.begin();
@@ -815,11 +808,8 @@
void MenuDefinition::expandFloatInsert(Buffer const * buf)
{
- if (!buf) {
- add(MenuItem(MenuItem::Command, qt_("No Document Open!"),
- FuncRequest(LFUN_NOACTION)));
+ if (!buf)
return;
- }
FloatList const & floats = buf->params().documentClass().floats();
FloatList::const_iterator cit = floats.begin();
@@ -837,11 +827,9 @@
void MenuDefinition::expandFlexInsert(
Buffer const * buf, InsetLayout::InsetLyXType type)
{
- if (!buf) {
- add(MenuItem(MenuItem::Command, qt_("No Document Open!"),
- FuncRequest(LFUN_NOACTION)));
+ if (!buf)
return;
- }
+
TextClass::InsetLayouts const & insetLayouts =
buf->params().documentClass().insetLayouts();
TextClass::InsetLayouts::const_iterator cit = insetLayouts.begin();
@@ -925,11 +913,8 @@
// know that all the entries in a TOC will be have status_ ==
// OK, so we avoid this unnecessary overhead (JMarc)
- if (!buf) {
- add(MenuItem(MenuItem::Command, qt_("No Document Open!"),
- FuncRequest(LFUN_NOACTION)));
+ if (!buf)
return;
- }
// Add an entry for the master doc if this is a child doc
Buffer const * const master = buf->masterBuffer();
@@ -1030,20 +1015,12 @@
void MenuDefinition::expandBranches(Buffer const * buf)
{
- if (!buf) {
- add(MenuItem(MenuItem::Command,
- qt_("No Document Open!"),
- FuncRequest(LFUN_NOACTION)));
+ if (!buf)
return;
- }
BufferParams const & params = buf->masterBuffer()->params();
- if (params.branchlist().empty()) {
- add(MenuItem(MenuItem::Command,
- qt_("No Branch in Document!"),
- FuncRequest(LFUN_NOACTION)));
+ if (params.branchlist().empty())
return;
- }
BranchList::const_iterator cit = params.branchlist().begin();
BranchList::const_iterator end = params.branchlist().end();
@@ -1063,12 +1040,8 @@
void MenuDefinition::expandCiteStyles(BufferView const * bv)
{
- if (!bv) {
- add(MenuItem(MenuItem::Command,
- qt_("No Document Open!"),
- FuncRequest(LFUN_NOACTION)));
+ if (!bv)
return;
- }
Inset const * inset = bv->cursor().nextInset();
if (!inset || inset->lyxCode() != CITE_CODE) {
@@ -1164,6 +1137,7 @@
else if (m->kind() == MenuItem::Submenu) {
QMenu * subMenu = qMenu.addMenu(label(*m));
populate(*subMenu, m->submenu());
+ subMenu->setEnabled(m->status().enabled());
} else {
// we have a MenuItem::Command
qMenu.addAction(new Action(view, QIcon(), label(*m),