mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-20 17:01:22 +00:00
Fix terminal panel not keeping up with dir changes
The terminal panel is supposed to show the same location as the currently active Dolphin view at all times. However there was an issue when the terminal is supposed to quickly switch to a new location and then back again to the old one. The terminal ignored the switch to the old location unless it had already fully switched to the new location. Because it isn't particularly fast at fully switching to the new location, it would never do the expected thing of switching back to the old location. This commit makes it so the switch to the old location is only ignored if there are no in-progress switches to a different location. BUG: 391380 BUG: 416690 FIXED-IN: 22.04.2 Not totally sure if this fixes everything but it seems like an improvement.
This commit is contained in:
parent
4012ea30c9
commit
e70e12e3bd
|
@ -234,7 +234,9 @@ void TerminalPanel::changeDir(const QUrl& url)
|
|||
|
||||
void TerminalPanel::sendCdToTerminal(const QString& dir, HistoryPolicy addToHistory)
|
||||
{
|
||||
if (dir == m_konsolePartCurrentDirectory) {
|
||||
if (dir == m_konsolePartCurrentDirectory // We are already there
|
||||
&& m_sendCdToTerminalHistory.isEmpty() // …and that is not because the terminal couldn't keep up
|
||||
) {
|
||||
m_clearTerminal = false;
|
||||
return;
|
||||
}
|
||||
|
@ -252,8 +254,6 @@ void TerminalPanel::sendCdToTerminal(const QString& dir, HistoryPolicy addToHist
|
|||
}
|
||||
#endif
|
||||
|
||||
m_terminal->sendInput(" cd " + KShell::quoteArg(dir) + '\n');
|
||||
|
||||
// We want to ignore the currentDirectoryChanged(QString) signal, which we will receive after
|
||||
// the directory change, because this directory change is not caused by a "cd" command that the
|
||||
// user entered in the panel. Therefore, we have to remember 'dir'. Note that it could also be
|
||||
|
@ -261,6 +261,8 @@ void TerminalPanel::sendCdToTerminal(const QString& dir, HistoryPolicy addToHist
|
|||
if (addToHistory == HistoryPolicy::AddToHistory)
|
||||
m_sendCdToTerminalHistory.enqueue(QDir(dir).canonicalPath());
|
||||
|
||||
m_terminal->sendInput(" cd " + KShell::quoteArg(dir) + '\n');
|
||||
|
||||
if (m_clearTerminal) {
|
||||
m_terminal->sendInput(QStringLiteral(" clear\n"));
|
||||
m_clearTerminal = false;
|
||||
|
|
Loading…
Reference in a new issue