diff options
| author | Andrey Yashkin <[email protected]> | 2019-08-11 13:11:37 +0200 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2019-08-11 13:14:00 +0200 |
| commit | ec1a0c2543a590dd5bd49c3dfe27f77a27fcb05f (patch) | |
| tree | c92d4668aceb98617d4ed92558d12c384428a259 /src/panels | |
| parent | 4a25f01b7c137249f0aff67f48acb996095887c2 (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.cpp | 6 |
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))); |
