mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 05:16:21 +00:00
Do not show subfigures in the menu (bug #9759)
* More consistent behavour (no 30 elements limit) * Subfloats are given depth 1 * Only show depth 0 * Always show "Open outliner..."
This commit is contained in:
parent
12de677fcc
commit
c02f6bd8a7
@ -1312,27 +1312,49 @@ void MenuDefinition::expandToc(Buffer const * buf)
|
||||
continue;
|
||||
|
||||
MenuDefinition submenu;
|
||||
if (cit->second.size() >= 30) {
|
||||
FuncRequest f(LFUN_DIALOG_SHOW, "toc " + cit->first);
|
||||
submenu.add(MenuItem(MenuItem::Command, qt_("Open Navigator..."), f));
|
||||
} else {
|
||||
if (floatlist.typeExist(cit->first)) {
|
||||
TocIterator ccit = cit->second.begin();
|
||||
TocIterator eend = cit->second.end();
|
||||
for (; ccit != eend; ++ccit) {
|
||||
submenu.add(MenuItem(MenuItem::Command,
|
||||
limitStringLength(ccit->str()) + '|',
|
||||
FuncRequest(ccit->action())));
|
||||
if (0 == ccit->depth()) {// omit subfloats
|
||||
submenu.add(MenuItem(MenuItem::Command,
|
||||
limitStringLength(ccit->str()) + '|',
|
||||
FuncRequest(ccit->action())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MenuItem item(MenuItem::Submenu, guiName(cit->first, buf->params()));
|
||||
item.setSubmenu(submenu);
|
||||
if (floatlist.typeExist(cit->first) || cit->first == "child") {
|
||||
// Those two types deserve to be in the main menu.
|
||||
FuncRequest f(LFUN_DIALOG_SHOW, "toc " + cit->first);
|
||||
submenu.add(MenuItem(MenuItem::Separator));
|
||||
submenu.add(MenuItem(MenuItem::Command, qt_("Open Navigator..."), f));
|
||||
MenuItem item(MenuItem::Submenu, guiName(cit->first, buf->params()));
|
||||
// deserves to be in the main menu.
|
||||
item.setSubmenu(submenu);
|
||||
add(item);
|
||||
} else
|
||||
other_lists.add(item);
|
||||
} else {
|
||||
if (cit->second.size() >= 30) {
|
||||
// FIXME: the behaviour of the interface should not change
|
||||
// arbitrarily. Each type should be audited to see if the list
|
||||
// can be optimised like for floats above.
|
||||
FuncRequest f(LFUN_DIALOG_SHOW, "toc " + cit->first);
|
||||
submenu.add(MenuItem(MenuItem::Command, qt_("Open Navigator..."), f));
|
||||
} else {
|
||||
TocIterator ccit = cit->second.begin();
|
||||
TocIterator eend = cit->second.end();
|
||||
for (; ccit != eend; ++ccit) {
|
||||
submenu.add(MenuItem(MenuItem::Command,
|
||||
limitStringLength(ccit->str()) + '|',
|
||||
FuncRequest(ccit->action())));
|
||||
}
|
||||
}
|
||||
|
||||
MenuItem item(MenuItem::Submenu, guiName(cit->first, buf->params()));
|
||||
item.setSubmenu(submenu);
|
||||
if (cit->first == "child") {
|
||||
// deserves to be in the main menu.
|
||||
add(item);
|
||||
} else
|
||||
other_lists.add(item);
|
||||
}
|
||||
}
|
||||
if (!other_lists.empty()) {
|
||||
MenuItem item(MenuItem::Submenu, qt_("Other Lists"));
|
||||
|
@ -102,7 +102,7 @@ void InsetCaption::addToToc(DocIterator const & cpit, bool output_active) const
|
||||
docstring str = full_label_;
|
||||
int length = output_active ? INT_MAX : TOC_ENTRY_LENGTH;
|
||||
text().forOutliner(str, length);
|
||||
toc.push_back(TocItem(pit, 0, str, output_active));
|
||||
toc.push_back(TocItem(pit, is_subfloat_ ? 1 : 0, str, output_active));
|
||||
|
||||
// Proceed with the rest of the inset.
|
||||
InsetText::addToToc(cpit, output_active);
|
||||
@ -379,7 +379,7 @@ void InsetCaption::updateBuffer(ParIterator const & it, UpdateType utype)
|
||||
else
|
||||
name = master.B_(tclass.floats().getType(type).name());
|
||||
docstring counter = from_utf8(type);
|
||||
if (cnts.isSubfloat()) {
|
||||
if ((is_subfloat_ = cnts.isSubfloat())) {
|
||||
// only standard captions allowed in subfloats
|
||||
type_ = "Standard";
|
||||
counter = "sub-" + from_utf8(type);
|
||||
@ -402,9 +402,9 @@ void InsetCaption::updateBuffer(ParIterator const & it, UpdateType utype)
|
||||
sec += bformat(from_ascii("(%1$s)"), labelstring);
|
||||
}
|
||||
if (!sec.empty())
|
||||
full_label_ = bformat(from_ascii("%1$s %2$s:"), name, sec);
|
||||
full_label_ = bformat(from_ascii("%1$s %2$s: "), name, sec);
|
||||
else
|
||||
full_label_ = bformat(from_ascii("%1$s #:"), name);
|
||||
full_label_ = bformat(from_ascii("%1$s #: "), name);
|
||||
}
|
||||
|
||||
// Do the real work now.
|
||||
|
@ -96,6 +96,8 @@ private:
|
||||
///
|
||||
std::string floattype_;
|
||||
///
|
||||
bool is_subfloat_;
|
||||
///
|
||||
std::string type_;
|
||||
///
|
||||
docstring custom_label_;
|
||||
|
Loading…
Reference in New Issue
Block a user