diff options
author | Andrey Loskutov | 2019-08-19 15:45:05 +0000 |
---|---|---|
committer | Andrey Loskutov | 2019-08-19 15:53:09 +0000 |
commit | b84b4ceb1ec4d8c15002a30bfa648896f58d7e4c (patch) | |
tree | 8d85076fe7d768fc47612bc49b43307f1eb39051 | |
parent | ab8841ea6c504ad3409788ee2ca78869e8954939 (diff) | |
download | eclipse.platform.team-S4_13_0_RC2a.tar.gz eclipse.platform.team-S4_13_0_RC2a.tar.xz eclipse.platform.team-S4_13_0_RC2a.zip |
Bug 550222 - TeamAction getTargetPage() can return nullY20190919-0900Y20190916-0900Y20190914-0255Y20190913-0735Y20190912-0900Y20190912-0055Y20190910-0005Y20190909-0900Y20190905-0900Y20190903-1130Y20190902-0900Y20190829-0900Y20190826-1000Y20190822-0900S4_13_0_RC2aS4_13_0_RC2S4_13_0_RC1S4_13_0_M3R4_13I20190916-1045I20190907-1130I20190906-1800I20190906-0940I20190906-0410I20190904-2200I20190904-1805I20190904-0605I20190903-2155I20190903-1800I20190903-1410I20190903-1110I20190903-0605I20190902-1800I20190902-0805I20190902-0600I20190901-1800I20190901-0600I20190831-1800I20190831-0600I20190830-1800I20190830-0550I20190830-0440I20190828-1800I20190828-0600I20190827-1800I20190827-0600I20190826-1800I20190826-0640I20190826-0415I20190823-0840I20190823-0530I20190821-1800I20190821-0600I20190820-1800I20190820-0855I20190820-0600I20190819-2355R4_13_maintenance
- similar to what getTargetPart() is doing, return active page
- if the "target" part is disposed, set it to null to avoid memory leaks
Change-Id: I41e2fc0491b6c9eb524ecb02cd69f7a613ff819b
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java index b7e6d1513..6653f89d3 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java @@ -100,7 +100,11 @@ public abstract class TeamAction extends AbstractHandler implements IObjectActio @Override public void partClosed(IWorkbenchPartReference partRef) { - if (targetPart == partRef.getPart(false)) { + if(targetPart == null) { + return; + } + IWorkbenchPart part = partRef.getPart(false); + if (targetPart == part) { targetPart = null; } } @@ -425,8 +429,17 @@ public abstract class TeamAction extends AbstractHandler implements IObjectActio * @return IWorkbenchPage */ protected IWorkbenchPage getTargetPage() { - if (getTargetPart() == null) return TeamUIPlugin.getActivePage(); - return getTargetPart().getSite().getPage(); + IWorkbenchPart target = getTargetPart(); + if (target == null) { + return TeamUIPlugin.getActivePage(); + } + IWorkbenchPage page = target.getSite().getPage(); + if(page == null) { + // part was disposed => null targetPart to avoid memory leak + targetPart = null; + return TeamUIPlugin.getActivePage(); + } + return page; } /** @@ -466,7 +479,6 @@ public abstract class TeamAction extends AbstractHandler implements IObjectActio @Override public void dispose() { - super.dispose(); if(window != null) { window.getSelectionService().removePostSelectionListener(selectionListener); if (window.getActivePage() != null) { @@ -479,6 +491,7 @@ public abstract class TeamAction extends AbstractHandler implements IObjectActio window = null; targetPart = null; shell = null; + super.dispose(); } /** |