From a77f75bf7cbe499a1ef70ef7e9f6ec7213a5d875 Mon Sep 17 00:00:00 2001 From: Mariusz Glebocki Date: Tue, 19 Nov 2019 05:31:35 +0100 Subject: [PATCH] activeTerminalDisplay(): find parent TD if needed --- src/ViewSplitter.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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()