]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Now the konsole part is autodestructed when no tabs do exist. This makes the desired...
authorRafael Fernández López <ereslibre@kde.org>
Wed, 19 Dec 2007 01:35:09 +0000 (01:35 +0000)
committerRafael Fernández López <ereslibre@kde.org>
Wed, 19 Dec 2007 01:35:09 +0000 (01:35 +0000)
BUG: 153648

svn path=/trunk/KDE/kdebase/apps/; revision=750276

src/dolphinmainwindow.cpp
src/terminalsidebarpage.cpp
src/terminalsidebarpage.h

index acd1282a2a43710c11b7623363698fce5e6becec..6eb45ac0d1558389586d68800162f86ed656ece5 100644 (file)
@@ -1274,6 +1274,8 @@ void DolphinMainWindow::setupDockWidgets()
     SidebarPage* terminalWidget = new TerminalSidebarPage(terminalDock);
     terminalDock->setWidget(terminalWidget);
 
+    connect(terminalWidget, SIGNAL(hideTerminalSidebarPage()), terminalDock, SLOT(hide()));
+
     terminalDock->toggleViewAction()->setText(i18nc("@title:window", "Terminal"));
     terminalDock->toggleViewAction()->setShortcut(Qt::Key_F4);
     actionCollection()->addAction("show_terminal_panel", terminalDock->toggleViewAction());
index ced80ab9567be712b618c0a04d1c6e859fa347b2..61cc5aef885708e6b890fe1b3a35f55e414c2aef 100644 (file)
@@ -58,6 +58,26 @@ void TerminalSidebarPage::setUrl(const KUrl& url)
     }
 }
 
+void TerminalSidebarPage::terminalExited()
+{
+    emit hideTerminalSidebarPage();
+
+    KPluginFactory* factory = KPluginLoader("libkonsolepart").factory();
+    KParts::ReadOnlyPart* part = factory ? (factory->create<KParts::ReadOnlyPart>(this)) : 0;
+    if (part != 0) {
+        connect(part, SIGNAL(destroyed(QObject*)), this, SLOT(terminalExited()));
+        m_terminalWidget = part->widget();
+        m_layout->addWidget(m_terminalWidget);
+        m_terminal = qobject_cast<TerminalInterface *>(part);
+        m_terminal->showShellInDir(url().path());
+    }
+    if (m_terminal != 0) {
+        m_terminal->sendInput("cd " + KShell::quoteArg(url().path()) + '\n');
+        m_terminal->sendInput("clear\n");
+        m_terminalWidget->setFocus();
+    }
+}
+
 void TerminalSidebarPage::showEvent(QShowEvent* event)
 {
     if (event->spontaneous()) {
@@ -69,6 +89,7 @@ void TerminalSidebarPage::showEvent(QShowEvent* event)
         KPluginFactory* factory = KPluginLoader("libkonsolepart").factory();
         KParts::ReadOnlyPart* part = factory ? (factory->create<KParts::ReadOnlyPart>(this)) : 0;
         if (part != 0) {
+            connect(part, SIGNAL(destroyed(QObject*)), this, SLOT(terminalExited()));
             m_terminalWidget = part->widget();
             m_layout->addWidget(m_terminalWidget);
             m_terminal = qobject_cast<TerminalInterface *>(part);
index 5a4d40bdb9cfe4aaf472c49fd038a3368a1854a9..875a6b706f5e0358a872cc6e4b06e36dacb39c56 100644 (file)
@@ -44,6 +44,10 @@ public:
 public slots:
     /** @see SidebarPage::setUrl(). */
     virtual void setUrl(const KUrl& url);
+    void terminalExited();
+
+signals:
+    void hideTerminalSidebarPage();
 
 protected:
     /** @see QWidget::showEvent() */