diff --git a/src/CompositeWidgetFocusWatcher.cpp b/src/CompositeWidgetFocusWatcher.cpp index beea1391..052c3eff 100644 --- a/src/CompositeWidgetFocusWatcher.cpp +++ b/src/CompositeWidgetFocusWatcher.cpp @@ -35,10 +35,14 @@ CompositeWidgetFocusWatcher::CompositeWidgetFocusWatcher(QWidget *compositeWidge bool CompositeWidgetFocusWatcher::eventFilter(QObject *watched, QEvent *event) { - Q_UNUSED(watched) - auto *focusEvent = static_cast(event); switch(event->type()) { + case QEvent::Close: + case QEvent::DeferredDelete: + case QEvent::Destroy: + removeEventFilter(watched); + disconnect(this, &CompositeWidgetFocusWatcher::compositeFocusChanged, watched, nullptr); + break; case QEvent::FocusIn: emit compositeFocusChanged(true); break; diff --git a/src/terminalDisplay/TerminalDisplay.cpp b/src/terminalDisplay/TerminalDisplay.cpp index 7b3d7215..68a11a31 100644 --- a/src/terminalDisplay/TerminalDisplay.cpp +++ b/src/terminalDisplay/TerminalDisplay.cpp @@ -577,7 +577,7 @@ TerminalDisplay::TerminalDisplay(QWidget* parent) new AutoScrollHandler(this); // Keep this last - auto focusWatcher = new CompositeWidgetFocusWatcher(this, this); + CompositeWidgetFocusWatcher *focusWatcher = new CompositeWidgetFocusWatcher(this, this); connect(focusWatcher, &CompositeWidgetFocusWatcher::compositeFocusChanged, this, [this](bool focused) {_hasCompositeFocus = focused;}); connect(focusWatcher, &CompositeWidgetFocusWatcher::compositeFocusChanged,