void TerminalPanel::slotKonsolePartCurrentDirectoryChanged(const QString& dir)
{
- m_konsolePartCurrentDirectory = dir;
-
- // Only change the view URL if 'dir' is different from the current view URL.
- // Note that the current view URL could also be a symbolic link to 'dir'
- // -> use QDir::canonicalPath() to check that.
- const QUrl oldUrl(url());
- const QUrl newUrl(QUrl::fromLocalFile(dir));
- if (newUrl != oldUrl && dir != QDir(oldUrl.path()).canonicalPath()) {
- emit changeUrl(newUrl);
+ m_konsolePartCurrentDirectory = QDir(dir).canonicalPath();
+
+ // Only emit a changeUrl signal if the directory change was caused by the user inside the
+ // terminal, and not by sendCdToTerminal(QString).
+ while (!m_sendCdToTerminalHistory.empty()) {
+ if (m_konsolePartCurrentDirectory == m_sendCdToTerminalHistory.dequeue()) {
+ return;
+ }
}
+
+ emit changeUrl(dir);
}
-
-#include "terminalpanel.moc"