diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2017-07-02 15:35:57 +0200 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2017-07-02 15:36:26 +0200 |
commit | 6897563b54827aa2ce7190b93216c0d8d911168f (patch) | |
tree | 8711d2446a0f93b1559ee0420ee25cc0b93d27ca /src/widgets/qlistview.cpp | |
parent | e6fdc7463e16d47092c1a1c3f5191c1e40b8d012 (diff) | |
download | qt3-6897563b54827aa2ce7190b93216c0d8d911168f.tar.gz qt3-6897563b54827aa2ce7190b93216c0d8d911168f.zip |
ListView: Deselect items that are hidden by the filter
during selectAll and invertSelection
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
(cherry picked from commit d96172f76d7cfef8f9e758c4831ebca077a30537)
Diffstat (limited to 'src/widgets/qlistview.cpp')
-rw-r--r-- | src/widgets/qlistview.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/widgets/qlistview.cpp b/src/widgets/qlistview.cpp index 304ad18..e85929e 100644 --- a/src/widgets/qlistview.cpp +++ b/src/widgets/qlistview.cpp @@ -5350,9 +5350,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; } @@ -5382,8 +5390,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(); |