┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArjun AK <[email protected]>2014-07-22 17:31:49 +0530
committerArjun AK <[email protected]>2014-07-22 17:31:49 +0530
commit9a6950657215f2195001795e21785d276fb20744 (patch)
tree1fb1077b8e79dd2e59754fff6aa2f5f7c3f7c348
parent0f2f9fd5b8d105dea3da5b493358388fd883cb30 (diff)
make CTRL+SHIFT+T reopen last closed tab
BUG: 336818 FEATURE: 118994
-rw-r--r--src/dolphinmainwindow.cpp14
-rw-r--r--src/dolphinmainwindow.h2
-rw-r--r--src/dolphinrecenttabsmenu.cpp16
-rw-r--r--src/dolphinrecenttabsmenu.h2
-rw-r--r--src/dolphinui.rc1
5 files changed, 31 insertions, 4 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index b51389fd4..d321d3b4a 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -1220,6 +1220,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);
@@ -1350,6 +1355,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()));
KAction* forwardAction = KStandardAction::forward(this, SLOT(goForward()), actionCollection());
connect(forwardAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goForward(Qt::MouseButtons)));
diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h
index 9c7f185bc..6f37f42ee 100644
--- a/src/dolphinmainwindow.h
+++ b/src/dolphinmainwindow.h
@@ -468,6 +468,8 @@ private slots:
void activeViewChanged();
+ void closedTabsCountChanged(unsigned int count);
+
private:
/**
* Activates the given view, which means that
diff --git a/src/dolphinrecenttabsmenu.cpp b/src/dolphinrecenttabsmenu.cpp
index a39f9945b..2335f1bf4 100644
--- a/src/dolphinrecenttabsmenu.cpp
+++ b/src/dolphinrecenttabsmenu.cpp
@@ -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) {
diff --git a/src/dolphinrecenttabsmenu.h b/src/dolphinrecenttabsmenu.h
index 34d41530b..b5acc735e 100644
--- a/src/dolphinrecenttabsmenu.h
+++ b/src/dolphinrecenttabsmenu.h
@@ -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);
diff --git a/src/dolphinui.rc b/src/dolphinui.rc
index 52826bb43..f197af402 100644
--- a/src/dolphinui.rc
+++ b/src/dolphinui.rc
@@ -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" />