┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels
diff options
context:
space:
mode:
authorAndrey Yashkin <[email protected]>2019-08-11 13:11:37 +0200
committerElvis Angelaccio <[email protected]>2019-08-11 13:14:00 +0200
commitec1a0c2543a590dd5bd49c3dfe27f77a27fcb05f (patch)
treec92d4668aceb98617d4ed92558d12c384428a259 /src/panels
parent4a25f01b7c137249f0aff67f48acb996095887c2 (diff)
Fix an issue with focus lost after closing terminal panel
Summary: After leaving terminal with Ctrl-D or exit commands the input focus isn't set back to the folder view. The problem appears, because `TerminalPanel::isHiddenInVisibleWindow` returns not what it supposed to return, since when the terminal process exits, `m_terminal` is set to nullptr. I moved unwanted checks from it inside `TerminalPanel::dockVisibilityChanged` This change also exposes a crash in `DolphinMainWindow::slotTerminalPanelVisibilityChanged()`, which was previously working only by luck. Now we check whether `m_activeViewContainer` is not null before using it. BUG: 407979 FIXED-IN: 19.11.80 Test Plan: 1. Open Dolphin 2. Press F4 to open the terminal panel 3. Type exit<Enter> or press Ctrl-D 4. Check current focus widget Reviewers: #dolphin Subscribers: ngraham, elvisangelaccio, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D22420
Diffstat (limited to 'src/panels')
-rw-r--r--src/panels/terminal/terminalpanel.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp
index 52d2a77df..86974d200 100644
--- a/src/panels/terminal/terminalpanel.cpp
+++ b/src/panels/terminal/terminalpanel.cpp
@@ -82,16 +82,14 @@ void TerminalPanel::terminalExited()
bool TerminalPanel::isHiddenInVisibleWindow() const
{
return parentWidget()
- && parentWidget()->isHidden()
- && m_terminal
- && !hasProgramRunning();
+ && parentWidget()->isHidden();
}
void TerminalPanel::dockVisibilityChanged()
{
// Only react when the DockWidget itself (not some parent) is hidden. This way we don't
// respond when e.g. Dolphin is minimized.
- if (isHiddenInVisibleWindow()) {
+ if (isHiddenInVisibleWindow() && m_terminal && !hasProgramRunning()) {
// Make sure that the following "cd /" command will not affect the view.
disconnect(m_konsolePart, SIGNAL(currentDirectoryChanged(QString)),
this, SLOT(slotKonsolePartCurrentDirectoryChanged(QString)));