mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
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. REVIEW: 101096 CCMAIL: naylor.b.david@gmail.com
This commit is contained in:
parent
43cebfda13
commit
5f78219e18
1 changed files with 4 additions and 5 deletions
|
@ -19,6 +19,8 @@
|
|||
|
||||
#include "terminalpanel.h"
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
#include <kpluginloader.h>
|
||||
#include <kpluginfactory.h>
|
||||
#include <kde_terminal_interface_v2.h>
|
||||
|
@ -115,11 +117,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');
|
||||
|
|
Loading…
Reference in a new issue