┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/terminalsidebarpage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/terminalsidebarpage.cpp')
-rw-r--r--src/terminalsidebarpage.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/terminalsidebarpage.cpp b/src/terminalsidebarpage.cpp
index ced80ab95..61cc5aef8 100644
--- a/src/terminalsidebarpage.cpp
+++ b/src/terminalsidebarpage.cpp
@@ -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);