Merge branch 'master' into frameworks

This commit is contained in:
Luca Beltrame 2014-07-22 15:58:03 +02:00
commit de3e2ae40f
5 changed files with 31 additions and 4 deletions

View file

@ -1225,6 +1225,11 @@ void DolphinMainWindow::activeViewChanged()
setActiveViewContainer(tabPage->activeViewContainer());
}
void DolphinMainWindow::closedTabsCountChanged(unsigned int count)
{
actionCollection()->action("undo_close_tab")->setEnabled(count > 0);
}
void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* viewContainer)
{
Q_ASSERT(viewContainer);
@ -1354,6 +1359,15 @@ void DolphinMainWindow::setupActions()
recentTabsMenu, SLOT(rememberClosedTab(KUrl,KUrl)));
connect(recentTabsMenu, SIGNAL(restoreClosedTab(KUrl,KUrl)),
this, SLOT(openNewActivatedTab(KUrl,KUrl)));
connect(recentTabsMenu, SIGNAL(closedTabsCountChanged(uint)),
this, SLOT(closedTabsCountChanged(uint)));
KAction* undoCloseTab = actionCollection()->addAction("undo_close_tab");
undoCloseTab->setText(i18nc("@action:inmenu File", "Undo close tab"));
undoCloseTab->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_T);
undoCloseTab->setIcon(KIcon("edit-undo"));
undoCloseTab->setEnabled(false);
connect(undoCloseTab, SIGNAL(triggered()), recentTabsMenu, SLOT(undoCloseTab()));
KStandardAction::forward(this, SLOT(goForward()), actionCollection());
KStandardAction::up(this, SLOT(goUp()), actionCollection());

View file

@ -469,6 +469,8 @@ private slots:
void activeViewChanged();
void closedTabsCountChanged(unsigned int count);
private:
/**
* Activates the given view, which means that

View file

@ -60,7 +60,7 @@ void DolphinRecentTabsMenu::rememberClosedTab(const KUrl& primaryUrl, const KUrl
} else {
insertAction(menu()->actions().at(2), action);
}
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) {
@ -70,6 +70,12 @@ void DolphinRecentTabsMenu::rememberClosedTab(const KUrl& primaryUrl, const KUrl
KAcceleratorManager::manage(menu());
}
void DolphinRecentTabsMenu::undoCloseTab()
{
Q_ASSERT(menu()->actions().size() > 2);
handleAction(menu()->actions().at(2));
}
void DolphinRecentTabsMenu::handleAction(QAction* action)
{
if (action == m_clearListAction) {
@ -80,14 +86,16 @@ void DolphinRecentTabsMenu::handleAction(QAction* action)
for (int i = 2; i < count; ++i) {
removeAction(actions.at(i));
}
emit closedTabsCountChanged(0);
} else {
const KUrl::List urls = action->data().value<KUrl::List>();
if (urls.count() == 2) {
emit restoreClosedTab(urls.first(), urls.last());
}
removeAction(action);
delete action;
action = 0;
if (urls.count() == 2) {
emit restoreClosedTab(urls.first(), urls.last());
}
emit closedTabsCountChanged(menu()->actions().size() - 2);
}
if (menu()->actions().count() <= 2) {

View file

@ -35,9 +35,11 @@ public:
public slots:
void rememberClosedTab(const KUrl& primaryUrl, const KUrl& secondaryUrl);
void undoCloseTab();
signals:
void restoreClosedTab(const KUrl& primaryUrl, const KUrl& secondaryUrl);
void closedTabsCountChanged(unsigned int count);
private slots:
void handleAction(QAction* action);

View file

@ -6,6 +6,7 @@
<Action name="new_window" />
<Action name="new_tab" />
<Action name="close_tab" />
<Action name="undo_close_tab" />
<Separator/>
<Action name="rename" />
<Action name="move_to_trash" />