diff --git a/src/ViewSplitter.cpp b/src/ViewSplitter.cpp index f150900e..f9f843b8 100644 --- a/src/ViewSplitter.cpp +++ b/src/ViewSplitter.cpp @@ -203,8 +203,17 @@ void ViewSplitter::focusRight() TerminalDisplay *ViewSplitter::activeTerminalDisplay() const { - auto focusedWidget = qobject_cast(focusWidget()); - return focusedWidget != nullptr ? focusedWidget : findChild(); + auto focusedWidget = focusWidget(); + auto focusedTerminalDisplay = qobject_cast(focusedWidget); + + // TD's child can be focused - try to find parent. + while (focusedTerminalDisplay == nullptr && focusedWidget != nullptr && focusedWidget != this) { + focusedWidget = focusedWidget->parentWidget(); + focusedTerminalDisplay = qobject_cast(focusedWidget); + } + + return focusedTerminalDisplay != nullptr ? focusedTerminalDisplay + : findChild(); } void ViewSplitter::toggleMaximizeCurrentTerminal()