mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-183003 vcs: do not use "before revision" to pass files to context
follow-up: df575fae3f
This commit is contained in:
@@ -154,6 +154,15 @@ public class ChangesUtil {
|
||||
.filter(Objects::nonNull);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Stream<VirtualFile> getAfterRevisionsFiles(@NotNull Stream<Change> changes) {
|
||||
return changes
|
||||
.map(ChangesUtil::getAfterPath)
|
||||
.filter(Objects::nonNull)
|
||||
.map(FilePath::getVirtualFile)
|
||||
.filter(Objects::nonNull);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link ChangesUtil#getFiles(Stream)}.
|
||||
*/
|
||||
|
||||
@@ -64,7 +64,7 @@ abstract class SpecificFilesViewDialog extends DialogWrapper {
|
||||
public void calcData(DataKey key, DataSink sink) {
|
||||
super.calcData(key, sink);
|
||||
if (shownDataKey.is(key.getName())) {
|
||||
sink.put(shownDataKey, getSelectedFiles());
|
||||
sink.put(shownDataKey, getSelectedVirtualFiles(null));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.intellij.openapi.vcs.changes.ChangesUtil.getAfterRevisionsFiles;
|
||||
import static com.intellij.openapi.vcs.changes.ChangesUtil.getFiles;
|
||||
import static com.intellij.openapi.vcs.changes.ui.ChangesBrowserNode.*;
|
||||
import static com.intellij.util.containers.UtilKt.getIfSingle;
|
||||
@@ -156,13 +157,13 @@ public class ChangesListView extends Tree implements TypeSafeDataProvider, DnDAw
|
||||
sink.put(VcsDataKeys.VIRTUAL_FILE_STREAM, getSelectedFiles());
|
||||
}
|
||||
else if (key == CommonDataKeys.NAVIGATABLE) {
|
||||
VirtualFile file = getIfSingle(getSelectedFiles());
|
||||
VirtualFile file = getIfSingle(getNavigatableFiles());
|
||||
if (file != null && !file.isDirectory()) {
|
||||
sink.put(CommonDataKeys.NAVIGATABLE, new OpenFileDescriptor(myProject, file, 0));
|
||||
}
|
||||
}
|
||||
else if (key == CommonDataKeys.NAVIGATABLE_ARRAY) {
|
||||
sink.put(CommonDataKeys.NAVIGATABLE_ARRAY, ChangesUtil.getNavigatableArray(myProject, getSelectedFiles()));
|
||||
sink.put(CommonDataKeys.NAVIGATABLE_ARRAY, ChangesUtil.getNavigatableArray(myProject, getNavigatableFiles()));
|
||||
}
|
||||
else if (key == PlatformDataKeys.DELETE_ELEMENT_PROVIDER) {
|
||||
if (getSelectionObjectsStream().anyMatch(userObject -> !(userObject instanceof ChangeList))) {
|
||||
@@ -236,7 +237,7 @@ public class ChangesListView extends Tree implements TypeSafeDataProvider, DnDAw
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Stream<VirtualFile> getSelectedVirtualFiles(@Nullable Object tag) {
|
||||
protected Stream<VirtualFile> getSelectedVirtualFiles(@Nullable Object tag) {
|
||||
return getSelectionNodesStream(tag)
|
||||
.flatMap(ChangesBrowserNode::getFilesUnderStream)
|
||||
.distinct();
|
||||
@@ -317,7 +318,15 @@ public class ChangesListView extends Tree implements TypeSafeDataProvider, DnDAw
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected Stream<VirtualFile> getSelectedFiles() {
|
||||
private Stream<VirtualFile> getSelectedFiles() {
|
||||
return Stream.concat(
|
||||
getAfterRevisionsFiles(getSelectedChanges()),
|
||||
getSelectedVirtualFiles(null)
|
||||
).distinct();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Stream<VirtualFile> getNavigatableFiles() {
|
||||
return Stream.concat(
|
||||
getFiles(getSelectedChanges()),
|
||||
getSelectedVirtualFiles(null)
|
||||
|
||||
+10
-3
@@ -57,8 +57,7 @@ import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.intellij.openapi.vcs.changes.ChangesUtil.getFiles;
|
||||
import static com.intellij.openapi.vcs.changes.ChangesUtil.getNavigatableArray;
|
||||
import static com.intellij.openapi.vcs.changes.ChangesUtil.*;
|
||||
import static com.intellij.openapi.vcs.changes.ui.ChangesBrowserNode.UNVERSIONED_FILES_TAG;
|
||||
import static com.intellij.openapi.vcs.changes.ui.ChangesListView.*;
|
||||
|
||||
@@ -222,7 +221,7 @@ public abstract class OldChangesBrowserBase<T> extends JPanel implements TypeSaf
|
||||
sink.put(CommonDataKeys.VIRTUAL_FILE_ARRAY, getSelectedFiles().toArray(VirtualFile[]::new));
|
||||
}
|
||||
else if (key == CommonDataKeys.NAVIGATABLE_ARRAY) {
|
||||
sink.put(CommonDataKeys.NAVIGATABLE_ARRAY, getNavigatableArray(myProject, getSelectedFiles()));
|
||||
sink.put(CommonDataKeys.NAVIGATABLE_ARRAY, getNavigatableArray(myProject, getNavigatableFiles()));
|
||||
}
|
||||
else if (VcsDataKeys.IO_FILE_ARRAY.equals(key)) {
|
||||
sink.put(VcsDataKeys.IO_FILE_ARRAY, getSelectedIoFiles());
|
||||
@@ -438,6 +437,14 @@ public abstract class OldChangesBrowserBase<T> extends JPanel implements TypeSaf
|
||||
|
||||
@NotNull
|
||||
protected Stream<VirtualFile> getSelectedFiles() {
|
||||
return Stream.concat(
|
||||
getAfterRevisionsFiles(getSelectedChanges().stream()),
|
||||
getVirtualFiles(myViewer.getSelectionPaths(), null)
|
||||
).distinct();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected Stream<VirtualFile> getNavigatableFiles() {
|
||||
return Stream.concat(
|
||||
getFiles(getSelectedChanges().stream()),
|
||||
getVirtualFiles(myViewer.getSelectionPaths(), null)
|
||||
|
||||
Reference in New Issue
Block a user