]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Prevent unwanted URL changes when using the Terminal Panel
authorFrank Reininghaus <frank78ac@googlemail.com>
Wed, 19 Sep 2012 07:28:22 +0000 (09:28 +0200)
committerFrank Reininghaus <frank78ac@googlemail.com>
Wed, 19 Sep 2012 07:28:35 +0000 (09:28 +0200)
The root cause of the problem was that TerminalPanel's member
m_konsolePartCurrentDirectory, which is used to determine in
TerminalPanel::sendCdToTerminal(QString& dir) if the Konsole part's
directory is aleady 'dir', such that issuing the 'cd' command is not
needed, was updated too late, namely when the part's
currentDirectoryChanged(QString) signal was received, which may be up
to one second after the 'cd' command.

When changing the directory from "dir1" to "dir2" and going back to
the "dir1" in less than one second (either by using the 'Back' action
or by activating a tab which still had "dir1" open), the 'cd dir1'
command was therefore suppressed because the Terminal Panel still
thought that "dir1" was the current directory in the part. However,
the directory of the part was actually "dir2", and when the
currentDirectoryChanged(QString) signal was received from the part, the
view's URL was set to "dir2" as well.

BUG: 306349
BUG: 304838
FIXED-IN: 4.9.2

src/panels/terminal/terminalpanel.cpp

index 889c07e45fc8e4c5549c90c1926b420af19e83b7..f6d3a5981c8d5977b52d7197f5af8615e3a0eb52 100644 (file)
@@ -159,6 +159,7 @@ void TerminalPanel::sendCdToTerminal(const QString& dir)
     }
 
     m_terminal->sendInput(" cd " + KShell::quoteArg(dir) + '\n');
+    m_konsolePartCurrentDirectory = dir;
 
     if (m_clearTerminal) {
         m_terminal->sendInput(" clear\n");