X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/954e8c47906c12edaaf6e6aebdd41516eceb0d44..781e8e9e18579c0fe368ed9fe295f908493272b3:/src/dolphinrecenttabsmenu.cpp diff --git a/src/dolphinrecenttabsmenu.cpp b/src/dolphinrecenttabsmenu.cpp index 0a274fed8..d9b103c0c 100644 --- a/src/dolphinrecenttabsmenu.cpp +++ b/src/dolphinrecenttabsmenu.cpp @@ -5,33 +5,38 @@ */ #include "dolphinrecenttabsmenu.h" +#include "search/dolphinquery.h" #include #include #include #include +#include -DolphinRecentTabsMenu::DolphinRecentTabsMenu(QObject* parent) : - KActionMenu(QIcon::fromTheme(QStringLiteral("edit-undo")), i18n("Recently Closed Tabs"), parent) +DolphinRecentTabsMenu::DolphinRecentTabsMenu(QObject *parent) + : KActionMenu(QIcon::fromTheme(QStringLiteral("edit-undo")), i18n("Recently Closed Tabs"), parent) { - setDelayed(false); + setPopupMode(QToolButton::InstantPopup); setEnabled(false); m_clearListAction = new QAction(i18n("Empty Recently Closed Tabs"), this); - m_clearListAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-clear-list"))); + m_clearListAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-clear-history"))); addAction(m_clearListAction); addSeparator(); - connect(menu(), &QMenu::triggered, - this, &DolphinRecentTabsMenu::handleAction); + connect(menu(), &QMenu::triggered, this, &DolphinRecentTabsMenu::handleAction); } -void DolphinRecentTabsMenu::rememberClosedTab(const QUrl& url, const QByteArray& state) +void DolphinRecentTabsMenu::rememberClosedTab(const QUrl &url, const QByteArray &state) { - QAction* action = new QAction(menu()); - action->setText(url.path()); + QAction *action = new QAction(menu()); + if (Search::isSupportedSearchScheme(url.scheme())) { + action->setText(Search::DolphinQuery{url, QUrl{}}.title()); + } else { + action->setText(url.path()); + } action->setData(state); const QString iconName = KIO::iconNameForUrl(url); action->setIcon(QIcon::fromTheme(iconName)); @@ -43,7 +48,7 @@ void DolphinRecentTabsMenu::rememberClosedTab(const QUrl& url, const QByteArray& } else { insertAction(menu()->actions().at(2), action); } - emit closedTabsCountChanged(menu()->actions().size() - 2); + Q_EMIT closedTabsCountChanged(menu()->actions().size() - 2); // Assure that only up to 6 closed tabs are shown in the menu. // 8 because of clear action + separator + 6 closed tabs if (menu()->actions().size() > 8) { @@ -59,27 +64,29 @@ void DolphinRecentTabsMenu::undoCloseTab() handleAction(menu()->actions().at(2)); } -void DolphinRecentTabsMenu::handleAction(QAction* action) +void DolphinRecentTabsMenu::handleAction(QAction *action) { if (action == m_clearListAction) { // Clear all actions except the "Empty Recently Closed Tabs" // action and the separator - QList actions = menu()->actions(); + QList actions = menu()->actions(); const int count = actions.size(); - for (int i = 2; i < count; ++i) { + for (int i = count - 1; i >= 2; i--) { removeAction(actions.at(i)); } - emit closedTabsCountChanged(0); + Q_EMIT closedTabsCountChanged(0); } else { const QByteArray state = action->data().toByteArray(); removeAction(action); delete action; action = nullptr; - emit restoreClosedTab(state); - emit closedTabsCountChanged(menu()->actions().size() - 2); + Q_EMIT restoreClosedTab(state); + Q_EMIT closedTabsCountChanged(menu()->actions().size() - 2); } if (menu()->actions().count() <= 2) { setEnabled(false); } } + +#include "moc_dolphinrecenttabsmenu.cpp"