diff --git a/src/frontends/qt4/Menus.cpp b/src/frontends/qt4/Menus.cpp index ea32aace5b..a3acbb11e4 100644 --- a/src/frontends/qt4/Menus.cpp +++ b/src/frontends/qt4/Menus.cpp @@ -1617,47 +1617,42 @@ void MenuDefinition::expandCaptions(Buffer const * buf, bool switchcap) if (!buf) return; - vector caps; DocumentClass const & dc = buf->params().documentClass(); + typedef vector< pair > Caps; + Caps caps; TextClass::InsetLayouts::const_iterator lit = dc.insetLayouts().begin(); TextClass::InsetLayouts::const_iterator len = dc.insetLayouts().end(); for (; lit != len; ++lit) { - if (prefixIs(lit->first, from_ascii("Caption:"))) - caps.push_back(lit->first); + docstring instype; + docstring const type = split(lit->first, instype, ':'); + if (instype == "Caption") { + // skip forbidden caption types + FuncRequest const cmd = switchcap + ? FuncRequest(LFUN_INSET_MODIFY, from_ascii("changetype ") + type) + : FuncRequest(LFUN_CAPTION_INSERT, type); + if (getStatus(cmd).enabled()) + caps.push_back(make_pair(type, cmd)); + } } if (caps.empty() || (switchcap && caps.size() == 1)) return; if (caps.size() == 1) { - docstring dummy; - docstring const type = split(*caps.begin(), dummy, ':'); - add(MenuItem(MenuItem::Command, qt_("Caption"), - FuncRequest(LFUN_CAPTION_INSERT, translateIfPossible(type)))); + add(MenuItem(MenuItem::Command, qt_("Caption"), caps.front().second)); return; } MenuDefinition captions; - - vector::const_iterator cit = caps.begin(); - vector::const_iterator end = caps.end(); - - for (int ii = 1; cit != end; ++cit, ++ii) { - docstring dummy; - docstring const type = split(*cit, dummy, ':'); + Caps::const_iterator cit = caps.begin(); + Caps::const_iterator end = caps.end(); + for ( ; cit != end; ++cit) { + docstring const type = cit->first; docstring const trtype = translateIfPossible(type); docstring const cmitem = bformat(_("Caption (%1$s)"), trtype); - // make menu item optional, otherwise we would also see - // forbidden caption types if (switchcap) - addWithStatusCheck(MenuItem(MenuItem::Command, toqstr(cmitem), - FuncRequest(LFUN_INSET_MODIFY, - from_ascii("changetype ") - + type), QString(), true)); + add(MenuItem(MenuItem::Command, toqstr(cmitem), cit->second)); else - captions.addWithStatusCheck(MenuItem(MenuItem::Command, - toqstr(trtype), - FuncRequest(LFUN_CAPTION_INSERT, - type), QString(), true)); + captions.add(MenuItem(MenuItem::Command, toqstr(trtype), cit->second)); } if (!captions.empty()) { MenuItem item(MenuItem::Submenu, qt_("Caption")); diff --git a/status.22x b/status.22x index 1ad21c346a..b27f6d7710 100644 --- a/status.22x +++ b/status.22x @@ -27,6 +27,9 @@ What's new - Names containing @ are now recognised by the syntax highlighter in the preamble. +- Replace Insert>Caption submenu by a normal entry when there is only one + caption type. + * DOCUMENTATION AND LOCALIZATION