From: Raphael Kubo da Costa Date: Tue, 12 Apr 2011 14:14:25 +0000 (-0300) Subject: Fix directory navigation in Dolphin::Terminal. X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/a19e78d75b0bc451685d2248be0ec474b3c18966 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: naylor.b.david@gmail.com (cherry picked from commit 5f78219e18073e475ed1f1865a1a2be1fafd60cf) --- 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 + #include #include #include @@ -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');