Bug 520069 - Better performance when setting viewer filters

Suppress updating item labels when filters of a viewer are updated,
since updating the filters will not modify any of the existing labels.
This can reduce the refresh() time drastically.

The change in AbstractTreeViewer seems to be an independent bug, which
was only uncovered by this change. If labelRefreshing is disabled, the
association between viewer elements and widgets will get out of sync,
but that execution path was probably not exploited up to now.

Change-Id: Ic94999d9bcba49a94d2157b2e50cc411e4f9c850
Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
index bc93440..3259563 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/AbstractTreeViewer.java
@@ -2711,6 +2711,8 @@
 				updatePlus(item, newElement);
 				if (updateLabels) {
 					updateItem(item, newElement);
+				} else {
+					associate(newElement, item);
 				}
 			}
 		}
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
index 85125d3..a8db23b 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
@@ -1621,7 +1621,7 @@
 			resetFilters();
 		} else {
 			this.filters = new ArrayList<>(Arrays.asList(filters));
-			refresh();
+			refresh(false);
 		}
 	}
 
@@ -1632,7 +1632,7 @@
 	public void resetFilters() {
 		if (filters != null) {
 			filters = null;
-			refresh();
+			refresh(false);
 		}
 	}