]> git.lyx.org Git - lyx.git/blobdiff - src/MenuBackend.cpp
Fix copy&paste bug.
[lyx.git] / src / MenuBackend.cpp
index e9d2509e81baf086006e936abefc9792cb8c340a..d4e0e2b7df9b55ce53c5cfefeae56cab4ce170fd 100644 (file)
@@ -65,7 +65,7 @@ using std::max;
 using std::sort;
 using std::string;
 using std::vector;
-
+using std::stack;
 
 namespace {
 
@@ -219,6 +219,7 @@ Menu & Menu::read(Lexer & lex)
                md_bookmarks,
                md_charstyles,
                md_custom,
+               md_elements,
                md_endmenu,
                md_exportformats,
                md_importformats,
@@ -243,6 +244,7 @@ Menu & Menu::read(Lexer & lex)
                { "charstyles", md_charstyles },
                { "custom", md_custom },
                { "documents", md_documents },
+               { "elements", md_elements },
                { "end", md_endmenu },
                { "exportformats", md_exportformats },
                { "floatinsert", md_floatinsert },
@@ -300,6 +302,10 @@ Menu & Menu::read(Lexer & lex)
                        add(MenuItem(MenuItem::Custom));
                        break;
 
+               case md_elements:
+                       add(MenuItem(MenuItem::Elements));
+                       break;
+
                case md_documents:
                        add(MenuItem(MenuItem::Documents));
                        break;
@@ -417,6 +423,27 @@ void Menu::checkShortcuts() const
 }
 
 
+bool Menu::searchFunc(FuncRequest & func, stack<docstring> & names)
+{
+       const_iterator m = begin();
+       const_iterator m_end = end();
+       for (; m != m_end; ++m) {
+               if (m->kind() == MenuItem::Command && m->func() == func) {
+                       names.push(m->label());
+                       return true;
+               } else if (m->kind() == MenuItem::Submenu) {
+                       names.push(m->label());
+                       Menu submenu = menubackend.getMenu(m->submenuname());
+                       if (submenu.searchFunc(func, names))
+                               return true;
+                       else
+                               names.pop();
+               }
+       }
+       return false;
+}
+
+
 void MenuBackend::specialMenu(Menu const & menu)
 {
        specialmenu_ = menu;
@@ -891,6 +918,10 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
                        expandFlexInsert(tomenu, buf, "custom");
                        break;
 
+               case MenuItem::Elements:
+                       expandFlexInsert(tomenu, buf, "element");
+                       break;
+
                case MenuItem::FloatListInsert:
                        expandFloatListInsert(tomenu, buf);
                        break;