From ad6af17aea071680cf35c06846fab6fb8f885a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Sun, 2 Jul 2017 15:28:40 +0200 Subject: [PATCH] IconView: Deselect items that are hidden by the filter during selectAll and invertSelection This resolves bug 2750 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko (cherry picked from commit 057d9fe7a490371b8f2914992ef5c9fcae9720a7) --- src/iconview/qiconview.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/iconview/qiconview.cpp b/src/iconview/qiconview.cpp index 2eb7b71..b838427 100644 --- a/src/iconview/qiconview.cpp +++ b/src/iconview/qiconview.cpp @@ -3872,11 +3872,11 @@ void QIconView::selectAll( bool select ) rr = rr.unite( item->rect() ); changed = TRUE; } - else { - if ( FALSE != item->isSelected() ) { - item->setSelected( FALSE, TRUE ); - changed = TRUE; - } + } + else { + if ( FALSE != item->isSelected() ) { + item->setSelected( FALSE, TRUE ); + changed = TRUE; } } } @@ -3906,8 +3906,16 @@ void QIconView::invertSelection() bool b = signalsBlocked(); blockSignals( TRUE ); QIconViewItem *item = d->firstItem; - for ( ; item; item = item->next ) - item->setSelected( !item->isSelected(), TRUE ); + for ( ; item; item = item->next ) { + if (item->isVisible()) { + item->setSelected( !item->isSelected(), TRUE ); + } + else { + if ( FALSE != item->isSelected() ) { + item->setSelected( FALSE, TRUE ); + } + } + } blockSignals( b ); emit selectionChanged(); }