From 07832ff577514f68147543be393b83ad6600839e Mon Sep 17 00:00:00 2001 From: Mathieu Pellerin Date: Mon, 6 Jan 2025 16:18:40 +0700 Subject: [PATCH] Use visibility signal as driver for focus stack focus --- src/core/focusstack.cpp | 19 ++++++++++++------- src/core/focusstack.h | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/core/focusstack.cpp b/src/core/focusstack.cpp index 14cda2e53b..a0ab75ae30 100644 --- a/src/core/focusstack.cpp +++ b/src/core/focusstack.cpp @@ -17,8 +17,8 @@ void FocusStack::addFocusTaker( QObject *object ) { - QVariant visible = object->property( "visible" ); - QVariant opened = object->property( "opened" ); + const QVariant visible = object->property( "visible" ); + const QVariant opened = object->property( "opened" ); if ( opened.isValid() ) { connect( object, SIGNAL( opened() ), this, SLOT( popupOpened() ) ); @@ -26,7 +26,11 @@ void FocusStack::addFocusTaker( QObject *object ) } else if ( visible.isValid() ) { - connect( object, SIGNAL( activeFocusChanged( bool ) ), this, SLOT( itemFocusChanged( bool ) ) ); + connect( object, SIGNAL( visibleChanged() ), this, SLOT( visibleChanged() ) ); + if ( visible.toBool() ) + { + mStackList.append( object ); + } } } @@ -40,9 +44,10 @@ void FocusStack::popupClosed() setUnfocused( sender() ); } -void FocusStack::itemFocusChanged( bool itemActiveFocus ) +void FocusStack::visibleChanged() { - if ( itemActiveFocus ) + const QVariant visible = sender()->property( "visible" ); + if ( visible.toBool() ) { setFocused( sender() ); } @@ -60,8 +65,8 @@ void FocusStack::setFocused( QObject *object ) void FocusStack::setUnfocused( QObject *object ) { - QVariant visible = object->property( "visible" ); - QVariant opened = object->property( "opened" ); + const QVariant visible = object->property( "visible" ); + const QVariant opened = object->property( "opened" ); if ( opened.isValid() ) { if ( !opened.toBool() ) diff --git a/src/core/focusstack.h b/src/core/focusstack.h index 90e73e78cd..92645f2541 100644 --- a/src/core/focusstack.h +++ b/src/core/focusstack.h @@ -31,7 +31,7 @@ class FocusStack : public QObject Q_INVOKABLE void forceActiveFocusOnLastTaker() const; private slots: - void itemFocusChanged( bool itemActiveFocus ); + void visibleChanged(); void popupOpened(); void popupClosed();