FloatList::const_iterator end = floats.end();
set<string> seen;
for (; cit != end; ++cit) {
- // Different floats could declare the same ListCommand. We only
- // want it on the list once, though.
- string const & list_cmd = cit->second.listCommand();
- // This form of insert returns an iterator pointing to the newly
- // inserted element OR the existing element with that value, and
- // a bool indicating whether we inserted a new element. So we can
- // see if one is there and insert it if not all at once.
- pair<set<string>::iterator, bool> ret = seen.insert(list_cmd);
- if (!ret.second)
- continue;
+ if (!cit->second.usesFloatPkg()) {
+ // Different floats could declare the same ListCommand. We only
+ // want it on the list once, though.
+ string const & list_cmd = cit->second.listCommand();
+ if (list_cmd.empty())
+ // we do not know how to generate such a list
+ continue;
+ // This form of insert returns an iterator pointing to the newly
+ // inserted element OR the existing element with that value, and
+ // a bool indicating whether we inserted a new element. So we can
+ // see if one is there and insert it if not all at once.
+ pair<set<string>::iterator, bool> ret = seen.insert(list_cmd);
+ if (!ret.second)
+ continue;
+ }
string const & list_name = cit->second.listName();
addWithStatusCheck(MenuItem(MenuItem::Command, qt_(list_name),
FuncRequest(LFUN_FLOAT_LIST_INSERT, cit->second.floattype())));
// If so, then they should define ListName, as non-builtin floats do, and
// then we can use that.
// Really, all floats should define that.
- if (!cit->second.usesFloatPkg()) {
+ if (cit->second.isPredefined()) {
// Only two different types allowed here:
string const type = cit->second.floattype();
if (type == "table") {