diff --git a/platform/platform-impl/src/com/intellij/ide/dnd/FileCopyPasteUtil.java b/platform/platform-impl/src/com/intellij/ide/dnd/FileCopyPasteUtil.java index 18adbf28e01a..516561eaa25a 100644 --- a/platform/platform-impl/src/com/intellij/ide/dnd/FileCopyPasteUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/dnd/FileCopyPasteUtil.java @@ -69,17 +69,21 @@ public class FileCopyPasteUtil { public static boolean isFileListFlavorSupported(@NotNull final Transferable transferable) { return transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor) || - transferable.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor); + transferable.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor) || + transferable.isDataFlavorSupported(LinuxDragAndDropSupport.gnomeFileListFlavor); } public static boolean isFileListFlavorSupported(@NotNull final DnDEvent event) { return event.isDataFlavorSupported(DataFlavor.javaFileListFlavor) || - event.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor); + event.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor) || + event.isDataFlavorSupported(LinuxDragAndDropSupport.gnomeFileListFlavor); } public static boolean isFileListFlavorSupported(@NotNull final DataFlavor[] transferFlavors) { for (DataFlavor flavor : transferFlavors) { - if (flavor.equals(DataFlavor.javaFileListFlavor) || flavor.equals(LinuxDragAndDropSupport.uriListFlavor)) { + if (flavor != null && (flavor.equals(DataFlavor.javaFileListFlavor) || + flavor.equals(LinuxDragAndDropSupport.uriListFlavor) || + flavor.equals(LinuxDragAndDropSupport.gnomeFileListFlavor))) { return true; } } @@ -94,7 +98,7 @@ public class FileCopyPasteUtil { final List fileList = (List)transferable.getTransferData(DataFlavor.javaFileListFlavor); return fileList; } - else if (transferable.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor)) { + else { return LinuxDragAndDropSupport.getFiles(transferable); } } diff --git a/platform/platform-impl/src/com/intellij/ide/dnd/LinuxDragAndDropSupport.java b/platform/platform-impl/src/com/intellij/ide/dnd/LinuxDragAndDropSupport.java index 4d2e973bc930..b1a063579137 100644 --- a/platform/platform-impl/src/com/intellij/ide/dnd/LinuxDragAndDropSupport.java +++ b/platform/platform-impl/src/com/intellij/ide/dnd/LinuxDragAndDropSupport.java @@ -45,10 +45,19 @@ public class LinuxDragAndDropSupport { private LinuxDragAndDropSupport() { } - @NotNull + @Nullable public static List getFiles(@NotNull final Transferable transferable) throws IOException, UnsupportedFlavorException { - final Object transferData = transferable.getTransferData(uriListFlavor); - return getFiles(transferData.toString()); + if (transferable.isDataFlavorSupported(uriListFlavor)) { + final Object transferData = transferable.getTransferData(uriListFlavor); + return getFiles(transferData.toString()); + } + else if (transferable.isDataFlavorSupported(gnomeFileListFlavor)) { + final Object transferData = transferable.getTransferData(gnomeFileListFlavor); + final String content = FileUtil.loadTextAndClose((InputStream)transferData); + return getFiles(content); + } + + return null; } @NotNull