diff options
author | Thomas Wolf | 2020-04-07 07:47:27 +0000 |
---|---|---|
committer | Thomas Wolf | 2020-04-07 07:47:27 +0000 |
commit | 13c766569e8b5431829d6b5cc32a0eb7c152b3f9 (patch) | |
tree | 72c6cae7733c590605633c97e699628b05966cab /org.eclipse.egit.ui/src/org/eclipse/egit | |
parent | e77d3b3b65004a33a5eadb63124cce6ebf5e7ebc (diff) | |
download | egit-13c766569e8b5431829d6b5cc32a0eb7c152b3f9.tar.gz egit-13c766569e8b5431829d6b5cc32a0eb7c152b3f9.tar.xz egit-13c766569e8b5431829d6b5cc32a0eb7c152b3f9.zip |
[repo view] tag filtering: ensure status bar update
Always re-set the selection after filtering to make sure the label
and the status bar update correctly. Also guard against the tree
having been disposed.
Change-Id: I4301844979722bffd874e5ba1a079aa76747bad3
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Diffstat (limited to 'org.eclipse.egit.ui/src/org/eclipse/egit')
-rw-r--r-- | org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java index 0f85c4db69..f5f10a432e 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java @@ -142,6 +142,7 @@ import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Text; +import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.swt.widgets.Widget; import org.eclipse.team.ui.history.IHistoryView; @@ -175,7 +176,6 @@ import org.eclipse.ui.part.IShowInTargetList; import org.eclipse.ui.part.MultiPageEditorPart; import org.eclipse.ui.part.ShowInContext; import org.eclipse.ui.progress.IWorkbenchSiteProgressService; -import org.eclipse.ui.progress.UIJob; import org.eclipse.ui.progress.WorkbenchJob; import org.eclipse.ui.views.properties.IPropertySheetPage; import org.eclipse.ui.views.properties.PropertySheet; @@ -756,7 +756,8 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, // Pop up search field with initial pattern set; update pattern and // request a refresh of the node on each change with a small delay. AtomicReference<String> currentPattern = new AtomicReference<>(); - UIJob refresher = new UIJob(UIText.RepositoriesView_FilterJob) { + WorkbenchJob refresher = new WorkbenchJob( + UIText.RepositoriesView_FilterJob) { @Override public boolean belongsTo(Object family) { @@ -831,7 +832,6 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, container.setVisible(false); container.dispose(); viewer.getTree().setFocus(); - viewer.setSelection(new StructuredSelection(node)); } } }); @@ -848,8 +848,12 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, private void filter(RepositoriesCommonViewer viewer, FilterableNode filterNode, String filter) { FilterCache.INSTANCE.set(filterNode, filter); + Tree tree = viewer.getTree(); + if (tree == null || tree.isDisposed()) { + return; + } try { - viewer.getTree().setRedraw(false); + tree.setRedraw(false); TreeItem item = viewer.getItem(filterNode); Object currentNode = item.getData(); if (filterNode != currentNode && filterNode.equals(currentNode)) { @@ -859,8 +863,10 @@ public class RepositoriesView extends CommonNavigator implements IShowInSource, } viewer.refresh(filterNode); } finally { - viewer.getTree().setRedraw(true); + tree.setRedraw(true); } + // Force an update of the status bar + viewer.setSelection(viewer.getSelection()); } private void executeOpenCommandWithConfirmation(RepositoryTreeNode element, |