From ad6af17aea071680cf35c06846fab6fb8f885a44 Mon Sep 17 00:00:00 2001
From: Slávek Banko <slavek.banko@axis.cz>
Date: Sun, 2 Jul 2017 15:28:40 +0200
Subject: 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 <slavek.banko@axis.cz>
(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();
 }
-- 
cgit v1.2.3

