From 160ff8c0dd2dd71ffe67e72c5c3ec7d22c6e79d0 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Fri, 7 Dec 2018 13:34:35 +0300 Subject: [PATCH] [vcs-log] add an explanatory comment, suppress inspection and fix typo in the javadoc --- .../impl/src/com/intellij/vcs/log/util/VcsLogUtil.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/util/VcsLogUtil.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/util/VcsLogUtil.java index 87cd20aa6f5a..c1783e5e3322 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/util/VcsLogUtil.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/util/VcsLogUtil.java @@ -1,4 +1,4 @@ -// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.vcs.log.util; import com.intellij.openapi.Disposable; @@ -220,13 +220,19 @@ public class VcsLogUtil { /** * Registers disposable on both provided parent and project. When project is disposed, disposable is still accessed through parent, * while when parent is disposed, disposable gets removed from memory. So this method is suitable for parents that depend on project, - * but could be created and disposed several times through one project life, + * but could be created and disposed several times through one project life. * * @param parent parent to register disposable on. * @param project project to register disposable on. * @param disposable disposable to register. */ public static void registerWithParentAndProject(@NotNull Disposable parent, @NotNull Project project, @NotNull Disposable disposable) { + /* + Wrapping in another Disposable is required in order to register on several parents. + Otherwise the second `register` call will remove disposable from the first parent. + See com.intellij.openapi.util.objectTree.ObjectTree.register. + */ + //noinspection SSBasedInspection Disposer.register(parent, () -> Disposer.dispose(disposable)); Disposer.register(project, disposable); }