diff --git a/krusader/GUI/terminaldock.h b/krusader/GUI/terminaldock.h --- a/krusader/GUI/terminaldock.h +++ b/krusader/GUI/terminaldock.h @@ -45,7 +45,7 @@ public: TerminalDock(QWidget* parent, KrMainWindow *mainWindow); virtual ~TerminalDock(); - void sendInput(const QString& input); + void sendInput(const QString& input, bool clearCommand=true); void sendCd(const QString& path); virtual bool eventFilter(QObject * watched, QEvent * e) Q_DECL_OVERRIDE; bool isTerminalVisible() const; diff --git a/krusader/GUI/terminaldock.cpp b/krusader/GUI/terminaldock.cpp --- a/krusader/GUI/terminaldock.cpp +++ b/krusader/GUI/terminaldock.cpp @@ -119,17 +119,19 @@ MAIN_VIEW->setTerminalEmulator(false); } -void TerminalDock::sendInput(const QString& input) +void TerminalDock::sendInput(const QString& input, bool clearCommand) { if (!t) return; - // send SIGINT before input command to avoid unwanted behaviour when current line is not empty - // and command is appended to current input (e.g. "rm -rf x " concatenated with 'cd /usr'); - // code "borrowed" from Dolphin, Copyright (C) 2007-2010 by Peter Penz - const int processId = t->terminalProcessId(); - if (processId > 0) { - kill(processId, SIGINT); + if (clearCommand) { + // send SIGINT before input command to avoid unwanted behaviour when current line is not empty + // and command is appended to current input (e.g. "rm -rf x " concatenated with 'cd /usr'); + // code "borrowed" from Dolphin, Copyright (C) 2007-2010 by Peter Penz + const int processId = t->terminalProcessId(); + if (processId > 0) { + kill(processId, SIGINT); + } } t->sendInput(input); @@ -171,7 +173,7 @@ QString text = QApplication::clipboard()->text(); if (! text.isEmpty()) { text.replace('\n', '\r'); - sendInput(text); + sendInput(text, false); } return true; } @@ -191,7 +193,7 @@ filename = KrServices::quote(filename); - sendInput(QString(" ") + filename + QString(" ")); + sendInput(QString(" ") + filename + QString(" "), false); return true; } diff --git a/krusader/krslots.cpp b/krusader/krslots.cpp --- a/krusader/krslots.cpp +++ b/krusader/krslots.cpp @@ -294,7 +294,7 @@ MAIN_VIEW->cmdLine()->setFocus(); } else if (MAIN_VIEW->terminalDock()->isTerminalVisible()) { filename = QChar(' ') + filename + QChar(' '); - MAIN_VIEW->terminalDock()->sendInput(filename); + MAIN_VIEW->terminalDock()->sendInput(filename, false); MAIN_VIEW->terminalDock()->setFocus(); } }