Hi,

I've attached the changes that introduce a first version, adding actions for 
open recently closed tabs.

Even its really basic, feel free to add comments ;-)

Cheers,
Johannes
diff --git a/src/mainview.cpp b/src/mainview.cpp
index fa834af..020b6db 100644
--- a/src/mainview.cpp
+++ b/src/mainview.cpp
@@ -639,6 +639,14 @@ void MainView::previousTab()
     setCurrentIndex(next);
 }
 
+void MainView::openClosedTab()
+{
+    if (m_recentlyClosedTabs.size() >= 1) {
+        WebTab *w = newWebTab();
+        w->view()->setUrl(m_recentlyClosedTabs.at(0).url);
+    }
+}
+
 
 QLabel *MainView::animatedLoading(int index, bool addMovie)
 {
diff --git a/src/mainview.h b/src/mainview.h
index 367fcb1..12bf5c4 100644
--- a/src/mainview.h
+++ b/src/mainview.h
@@ -130,6 +130,7 @@ public slots:
     void nextTab();
     void previousTab();
     void detachTab(int index = -1);
+    void openClosedTab();
     
     // WEB slot actions
     void webReload();
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 03a6194..9134b3e 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -374,6 +374,15 @@ void MainWindow::setupActions()
     a->setShortcuts(QApplication::isRightToLeft() ? KStandardShortcut::tabNext() : KStandardShortcut::tabPrev());
     actionCollection()->addAction(QLatin1String("show_prev_tab"), a);
     connect(a, SIGNAL(triggered(bool)), m_view, SLOT(previousTab()));
+    
+    a = new KAction(KIcon("tab-new"), i18n("Open Closed Tab"), this);
+    actionCollection()->addAction(QLatin1String("open_closed_tab"), a);
+    connect(a, SIGNAL(triggered(bool)), m_view, SLOT(openClosedTab()));
+
+    // Closed Tabs Menu
+    KActionMenu *closedTabsMenu = new KActionMenu(KIcon("tab-new"), i18n("Closed Tabs"), this);
+    closedTabsMenu->setDelayed(false);
+    actionCollection()->addAction(QLatin1String("closed_tab_menu"), closedTabsMenu);
 
     // ============================== Indexed Tab Actions ====================================
     a = new KAction(KIcon("tab-close"), i18n("&Close Tab"), this);
@@ -590,6 +599,26 @@ void MainWindow::updateActions()
 
     QAction *historyForwardAction = actionByName(KStandardAction::name(KStandardAction::Forward));
     historyForwardAction->setEnabled(currentTab()->view()->history()->canGoForward());
+
+    QAction *openClosedTabsAction = actionByName(QLatin1String("open_closed_tab"));
+    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(KIcon("tab-new"), item.title, this);
+        connect(a, SIGNAL(triggered(bool)), m_view, SLOT(openClosedTab()));
+        am->addAction(a);
+    }
 }
 
 
diff --git a/src/tabbar.cpp b/src/tabbar.cpp
index a2f269c..42c952c 100644
--- a/src/tabbar.cpp
+++ b/src/tabbar.cpp
@@ -273,9 +273,10 @@ void TabBar::contextMenu(int tab, const QPoint &pos)
 
     menu.addAction(mainWindow->actionByName(QLatin1String("new_tab")));
     menu.addAction( mainWindow->actionByName("clone_tab") );
-
     if(count() > 1)
         menu.addAction( mainWindow->actionByName("detach_tab") );
+    menu.addAction(mainWindow->actionByName(QLatin1String("open_closed_tab")));
+    menu.addAction(mainWindow->actionByName(QLatin1String("closed_tab_menu")));
     menu.addSeparator();
     menu.addAction( mainWindow->actionByName("close_tab") );
     menu.addAction( mainWindow->actionByName("close_other_tabs") );
@@ -293,6 +294,8 @@ void TabBar::emptyAreaContextMenu(const QPoint &pos)
     MainWindow *mainWindow = Application::instance()->mainWindow();
 
     menu.addAction(mainWindow->actionByName(QLatin1String("new_tab")));
+    menu.addAction(mainWindow->actionByName(QLatin1String("open_closed_tab")));
+    menu.addAction(mainWindow->actionByName(QLatin1String("closed_tab_menu")));
     menu.addSeparator();
     menu.addAction( mainWindow->actionByName("reload_all_tabs") );
 
_______________________________________________
rekonq mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/rekonq

Reply via email to