summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2010-05-11 11:20:24 +0200
committerAndrea Diamantini <adjam7@gmail.com>2010-05-11 11:20:24 +0200
commita32b1a830acaaeda5caa070d046e5676fa8e9734 (patch)
tree417efb2d3e8976a72d52a0a8bd18b87a40318d8d /src
parentAdd "days" word to better explain the adblock update interval (diff)
downloadrekonq-a32b1a830acaaeda5caa070d046e5676fa8e9734.tar.xz
(Re)-open closed tabs
tabbar actions & CTRL + SHIFT + T shortcut for the last Johannes Zellner's patch. Thanks :)
Diffstat (limited to 'src')
-rw-r--r--src/mainview.cpp16
-rw-r--r--src/mainview.h2
-rw-r--r--src/mainwindow.cpp31
-rw-r--r--src/tabbar.cpp5
4 files changed, 53 insertions, 1 deletions
diff --git a/src/mainview.cpp b/src/mainview.cpp
index 6179af80..e703976d 100644
--- a/src/mainview.cpp
+++ b/src/mainview.cpp
@@ -637,6 +637,22 @@ void MainView::previousTab()
setCurrentIndex(next);
}
+void MainView::openClosedTabs()
+{
+ foreach (const HistoryItem &item, recentlyClosedTabs())
+ {
+ Application::instance()->loadUrl( KUrl(item.url), Rekonq::SettingOpenTab);
+ }
+}
+
+void MainView::openClosedTab()
+{
+ KAction *action = qobject_cast<KAction *>(sender());
+ if (action)
+ {
+ Application::instance()->loadUrl(action->data().toUrl(), Rekonq::SettingOpenTab);
+ }
+}
QLabel *MainView::animatedLoading(int index, bool addMovie)
{
diff --git a/src/mainview.h b/src/mainview.h
index eb5b3e02..6edccc15 100644
--- a/src/mainview.h
+++ b/src/mainview.h
@@ -132,6 +132,8 @@ public slots:
void nextTab();
void previousTab();
void detachTab(int index = -1);
+ void openClosedTabs();
+ void openClosedTab();
// WEB slot actions
void webReload();
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index ef665cc7..128648bf 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -393,6 +393,16 @@ void MainWindow::setupActions()
a->setShortcuts(QApplication::isRightToLeft() ? KStandardShortcut::tabNext() : KStandardShortcut::tabPrev());
actionCollection()->addAction(QL1S("show_prev_tab"), a);
connect(a, SIGNAL(triggered(bool)), m_view, SLOT(previousTab()));
+
+ a = new KAction(KIcon("tab-new"), i18n("Open Closed Tabs"), this);
+ a->setShortcut(KShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_T));
+ actionCollection()->addAction(QL1S("open_closed_tabs"), a);
+ connect(a, SIGNAL(triggered(bool)), m_view, SLOT(openClosedTabs()));
+
+ // Closed Tabs Menu
+ KActionMenu *closedTabsMenu = new KActionMenu(KIcon("tab-new"), i18n("Closed Tabs"), this);
+ closedTabsMenu->setDelayed(false);
+ actionCollection()->addAction(QL1S("closed_tab_menu"), closedTabsMenu);
// ============================== Indexed Tab Actions ====================================
a = new KAction(KIcon("tab-close"), i18n("&Close Tab"), this);
@@ -634,6 +644,27 @@ void MainWindow::updateActions()
QAction *historyForwardAction = actionByName(KStandardAction::name(KStandardAction::Forward));
historyForwardAction->setEnabled(currentTab()->view()->history()->canGoForward());
+
+ QAction *openClosedTabsAction = actionByName(QLatin1String("open_closed_tabs"));
+ openClosedTabsAction->setEnabled(mainView()->recentlyClosedTabs().size() > 0);
+
+ // update closed tabs menu
+ KActionMenu *am = dynamic_cast<KActionMenu *>(actionByName(QLatin1String("closed_tab_menu")));
+ if (!am)
+ return;
+
+ am->setEnabled(mainView()->recentlyClosedTabs().size() > 0);
+
+ if (am->menu())
+ am->menu()->clear();
+
+ foreach (HistoryItem item, mainView()->recentlyClosedTabs())
+ {
+ KAction *a = new KAction(Application::icon(item.url), item.title, this);
+ a->setData(item.url);
+ connect(a, SIGNAL(triggered()), m_view, SLOT(openClosedTab()));
+ am->addAction(a);
+ }
}
diff --git a/src/tabbar.cpp b/src/tabbar.cpp
index 27835892..1274d813 100644
--- a/src/tabbar.cpp
+++ b/src/tabbar.cpp
@@ -279,9 +279,10 @@ void TabBar::contextMenu(int tab, const QPoint &pos)
menu.addAction(mainWindow->actionByName( QL1S("new_tab") ));
menu.addAction(mainWindow->actionByName( QL1S("clone_tab") ));
-
if (count() > 1)
menu.addAction(mainWindow->actionByName( QL1S("detach_tab") ));
+ menu.addAction(mainWindow->actionByName( QL1S("open_closed_tabs") ));
+ menu.addAction(mainWindow->actionByName( QL1S("closed_tab_menu") ));
menu.addSeparator();
menu.addAction(mainWindow->actionByName( QL1S("close_tab") ));
menu.addAction(mainWindow->actionByName( QL1S("close_other_tabs") ));
@@ -299,6 +300,8 @@ void TabBar::emptyAreaContextMenu(const QPoint &pos)
MainWindow *mainWindow = Application::instance()->mainWindow();
menu.addAction(mainWindow->actionByName( QL1S("new_tab") ));
+ menu.addAction(mainWindow->actionByName( QL1S("open_closed_tabs") ));
+ menu.addAction(mainWindow->actionByName( QL1S("closed_tab_menu") ));
menu.addSeparator();
menu.addAction(mainWindow->actionByName( QL1S("reload_all_tabs") ));