diff options
author | Dani Megert | 2013-07-10 12:13:34 +0000 |
---|---|---|
committer | Dani Megert | 2013-07-29 11:01:18 +0000 |
commit | f8de70ec6154b04986c8249dea13c573a722c669 (patch) | |
tree | 8bfce5dd285f5aa7ce4b0b1a0cf08abc334fc5ff | |
parent | 7b8db75d7e1cb639dafec4c03cd66ba78718e11d (diff) | |
download | eclipse.platform.team-f8de70ec6154b04986c8249dea13c573a722c669.tar.gz eclipse.platform.team-f8de70ec6154b04986c8249dea13c573a722c669.tar.xz eclipse.platform.team-f8de70ec6154b04986c8249dea13c573a722c669.zip |
Fixed bug 404873: [History View] Sporadic StackOverflowError
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java index 29be3085b..68855930b 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/GenericHistoryView.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2012 IBM Corporation and others. + * Copyright (c) 2006, 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -302,22 +302,31 @@ public class GenericHistoryView extends PageBookView implements IHistoryView, IP private ISelectionListener selectionListener = new ISelectionListener() { - public void selectionChanged(IWorkbenchPart part, ISelection selection) { + private boolean isUpdatingSelection = false; - if (GenericHistoryView.this == part) + public void selectionChanged(IWorkbenchPart part, ISelection selection) { + if (isUpdatingSelection) return; - if (selection instanceof IStructuredSelection) { - IStructuredSelection structSelection = (IStructuredSelection) selection; - //Always take the first element - this is not intended to work with multiple selection - //Also, hang on to this selection for future use in case the history view is not visible - lastSelectedElement = structSelection.getFirstElement(); - - if (!isLinkingEnabled() || !checkIfPageIsVisible()) { + try { + isUpdatingSelection = true; + if (GenericHistoryView.this == part) return; + + if (selection instanceof IStructuredSelection) { + IStructuredSelection structSelection = (IStructuredSelection) selection; + //Always take the first element - this is not intended to work with multiple selection + //Also, hang on to this selection for future use in case the history view is not visible + lastSelectedElement = structSelection.getFirstElement(); + + if (!isLinkingEnabled() || !checkIfPageIsVisible()) { + return; + } + + showLastSelectedElement(); } - - showLastSelectedElement(); + } finally { + isUpdatingSelection = false; } } |