diff options
| author | Raphael Kubo da Costa <[email protected]> | 2011-04-12 11:14:25 -0300 |
|---|---|---|
| committer | Raphael Kubo da Costa <[email protected]> | 2011-04-12 11:18:22 -0300 |
| commit | a19e78d75b0bc451685d2248be0ec474b3c18966 (patch) | |
| tree | 0baa09fdd81298488d42c2c0ac74b2ac475abcc9 | |
| parent | 2784a14b764b8a047501e0e61d53f9278dc439a4 (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.cpp | 9 |
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'); |
