Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Don't decorate every single resource on repository change

Not all resources have corresponding labels that are visible,
so by using LabelProviderChangedEvent() we ensure that only
the visible labels are refreshed.

The downside is that we lose project precition, so all
projects are included, but only visible labels in those
projects are re-decorated, so it is OK for now.

Signed-off-by: Tor Arne Vestbø <torarnv@gmail.com>
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
  • Loading branch information...
commit 8d11af93abf700a4b73c8582803fe526e1eaf9ae 1 parent 6fbe5b4
@torarnv torarnv authored robinrosenberg committed
View
28 org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitLightweightDecorator.java
@@ -14,11 +14,9 @@
package org.spearce.egit.ui.internal.decorators;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -28,7 +26,6 @@
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.resources.mapping.ResourceMapping;
import org.eclipse.core.runtime.CoreException;
@@ -697,7 +694,7 @@ public void propertyChange(PropertyChangeEvent event) {
if (prop.equals(TeamUI.GLOBAL_IGNORES_CHANGED)
|| prop.equals(TeamUI.GLOBAL_FILE_TYPES_CHANGED)
|| prop.equals(Activator.DECORATORS_CHANGED)) {
- postLabelEvent(new LabelProviderChangedEvent(this, null /* all */));
+ postLabelEvent(new LabelProviderChangedEvent(this));
}
}
@@ -824,29 +821,12 @@ public void refsChanged(RefsChangedEvent e) {
* Callback for RepositoryChangeListener events, as well as
* RepositoryListener events via repositoryChanged()
*
- * We resolve the project and schedule a refresh of each resource in the
- * project.
- *
* @see org.spearce.egit.core.project.RepositoryChangeListener#repositoryChanged(org.spearce.egit.core.project.RepositoryMapping)
*/
public void repositoryChanged(RepositoryMapping mapping) {
- final IProject project = mapping.getContainer().getProject();
- if (project == null)
- return;
-
- final List<IResource> resources = new ArrayList<IResource>();
- try {
- project.accept(new IResourceVisitor() {
- public boolean visit(IResource resource) {
- resources.add(resource);
- return true;
- }
- });
- postLabelEvent(new LabelProviderChangedEvent(this, resources
- .toArray()));
- } catch (final CoreException e) {
- handleException(project, e);
- }
+ // Until we find a way to refresh visible labels within a project
+ // we have to use this blanket refresh that includes all projects.
+ postLabelEvent(new LabelProviderChangedEvent(this));
}
// -------- Helper methods --------
Please sign in to comment.
Something went wrong with that request. Please try again.