┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael Kubo da Costa <[email protected]>2011-04-12 11:14:25 -0300
committerRaphael Kubo da Costa <[email protected]>2011-04-12 11:18:22 -0300
commita19e78d75b0bc451685d2248be0ec474b3c18966 (patch)
tree0baa09fdd81298488d42c2c0ac74b2ac475abcc9
parent2784a14b764b8a047501e0e61d53f9278dc439a4 (diff)
Fix directory navigation in Dolphin::Terminal.
When navigating in Dolphin it attempts to keep any open Terminal (F4) in sync by changing the directory in the shell. It does this by sending a "^C; cd $DIRECTORY" however shells under FreeBSD treat "^C" as a literal string and not SIGINT. Fix this by sending SIGINT to the shell instead of "^C". It appears Linux does not exhibit this behaviour. Patch originally written by David Naylor, from the KDE-FreeBSD team. CCMAIL: [email protected] (cherry picked from commit 5f78219e18073e475ed1f1865a1a2be1fafd60cf)
-rw-r--r--src/panels/terminal/terminalpanel.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp
index 61d80cbfa..8977111f8 100644
--- a/src/panels/terminal/terminalpanel.cpp
+++ b/src/panels/terminal/terminalpanel.cpp
@@ -19,6 +19,8 @@
#include "terminalpanel.h"
+#include <signal.h>
+
#include <KPluginLoader>
#include <KPluginFactory>
#include <kde_terminal_interface_v2.h>
@@ -113,11 +115,8 @@ void TerminalPanel::sendCdToTerminal(const QString& dir)
// The TerminalV2 interface does not provide a way to delete the
// current line before sending a new input. This is mandatory,
// otherwise sending a 'cd x' to a existing 'rm -rf *' might
- // result in data loss. As workaround Ctrl+C is send.
- QString cancel;
- cancel.append(QChar(3));
- cancel.append(QChar('c'));
- m_terminal->sendInput(cancel);
+ // result in data loss. As workaround SIGINT is send.
+ kill(m_terminal->terminalProcessId(), SIGINT);
}
m_terminal->sendInput("cd " + KShell::quoteArg(dir) + '\n');