From d96172f76d7cfef8f9e758c4831ebca077a30537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Sun, 2 Jul 2017 15:35:57 +0200 Subject: ListView: Deselect items that are hidden by the filter during selectAll and invertSelection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko --- src/widgets/qlistview.cpp | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/widgets/qlistview.cpp b/src/widgets/qlistview.cpp index c83ee40..a292cd3 100644 --- a/src/widgets/qlistview.cpp +++ b/src/widgets/qlistview.cpp @@ -5366,9 +5366,17 @@ void QListView::selectAll( bool select ) QListViewItemIterator it( this ); while ( it.current() ) { QListViewItem *i = it.current(); - if ( (bool)i->selected != select ) { - i->setSelected( select ); - anything = TRUE; + if ( i->isVisible()) { + if ( (bool)i->selected != select ) { + i->setSelected( select ); + anything = TRUE; + } + } + else { + if ( (bool)i->selected != FALSE ) { + i->setSelected( FALSE ); + anything = TRUE; + } } ++it; } @@ -5398,8 +5406,16 @@ void QListView::invertSelection() bool b = signalsBlocked(); blockSignals( TRUE ); QListViewItemIterator it( this ); - for ( ; it.current(); ++it ) - it.current()->setSelected( !it.current()->isSelected() ); + for ( ; it.current(); ++it ) { + if (it.current()->isVisible()) { + it.current()->setSelected( !it.current()->isSelected() ); + } + else { + if ( FALSE != it.current()->isSelected() ) { + it.current()->setSelected( FALSE ); + } + } + } blockSignals( b ); emit selectionChanged(); triggerUpdate(); -- cgit v1.2.3