]> git.lyx.org Git - lyx.git/blobdiff - src/MenuBackend.cpp
fix warning on possibly(?) unused precompiled headers due to different -fPic settings...
[lyx.git] / src / MenuBackend.cpp
index dce50f52d11a7259bc08c0c5d71b5305401ae91a..0180e42271ec6bad779be2e6bef346effdad627a 100644 (file)
@@ -456,24 +456,27 @@ void expandLastfiles(Menu & tomenu)
 
 void expandDocuments(Menu & tomenu)
 {
-       typedef vector<string> Strings;
-       Strings const names = theBufferList().getFileNames();
-
-       if (names.empty()) {
-               tomenu.add(MenuItem(MenuItem::Command, _("No Document Open!"),
-                                   FuncRequest(LFUN_NOACTION)));
+       Buffer * first = theBufferList().first();
+       if (first) {
+               Buffer * b = first;
+               int ii = 1;
+               
+               // We cannot use a for loop as the buffer list cycles.
+               do {
+                       docstring label = makeDisplayPath(b->fileName(), 20);
+                       if (!b->isClean()) label = label + "*";
+                       if (ii < 10)
+                               label = convert<docstring>(ii) + ". " + label + '|' + convert<docstring>(ii);
+                       tomenu.add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_BUFFER_SWITCH, b->fileName())));
+                       
+                       b = theBufferList().next(b);
+                       ++ii;
+               } while (b != first); 
+       } else {
+               tomenu.add(MenuItem(MenuItem::Command, _("No Documents Open!"),
+                          FuncRequest(LFUN_NOACTION)));
                return;
        }
-
-       int ii = 1;
-       Strings::const_iterator docit = names.begin();
-       Strings::const_iterator end = names.end();
-       for (; docit != end; ++docit, ++ii) {
-               docstring label = makeDisplayPath(*docit, 20);
-               if (ii < 10)
-                       label = convert<docstring>(ii) + ". " + label + char_type('|') + convert<docstring>(ii);
-               tomenu.add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_BUFFER_SWITCH, *docit)));
-       }
 }
 
 
@@ -705,6 +708,10 @@ void expandToc(Menu & tomenu, Buffer const * buf)
                return;
        }
 
+       Buffer* cbuf = const_cast<Buffer*>(buf);
+       cbuf->tocBackend().update();
+       cbuf->structureChanged();
+
        // Add an entry for the master doc if this is a child doc
        Buffer const * const master = buf->getMasterBuffer();
        if (buf != master) {