diff --git a/sublime/container.cpp b/sublime/container.cpp --- a/sublime/container.cpp +++ b/sublime/container.cpp @@ -155,8 +155,21 @@ std::sort(views.begin(), views.end(), sortViews); - foreach(View* view, views) { - QAction* action = documentListMenu->addAction(view->document()->title()); + for (int i = 0; i < views.size(); ++i) { + View *view = views.at(i); + QString visibleEntryTitle; + // if filename is not unique, prepend containing directory + if ((i < views.size() - 1 && view->document()->title() == views.at(i + 1)->document()->title()) + || (i > 0 && view->document()->title() == views.at(i - 1)->document()->title()) + ) { + auto url = qobject_cast(view->document())->url().toString(); + int secondOffset = url.lastIndexOf('/'); + secondOffset = url.lastIndexOf('/', secondOffset - 1); + visibleEntryTitle = url.right(url.length() - url.lastIndexOf('/', secondOffset) - 1); + } else { + visibleEntryTitle = view->document()->title(); + } + QAction* action = documentListMenu->addAction(visibleEntryTitle); action->setData(QVariant::fromValue(view)); documentListActionForView[view] = action; action->setIcon(view->document()->icon()); @@ -402,8 +415,11 @@ } // Update document list popup title + // but preserve prefix folder if it exists Q_ASSERT(d->documentListActionForView.contains(view)); - d->documentListActionForView[view]->setText(doc->title()); + if (!d->documentListActionForView[view]->text().endsWith('/' + doc->title())) { + d->documentListActionForView[view]->setText(doc->title()); + } break; } }