diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/listener/PadNewContentListener.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/listener/PadNewContentListener.java
index 4f3477f2f5e9ffda660f9c3e066524d148e5e5d3..a4f8d15c21f8b8a2fe047bdb6447ca7e80de4cee 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/listener/PadNewContentListener.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/listener/PadNewContentListener.java
@@ -19,7 +19,6 @@ import java.io.File;
 import java.nio.file.Path;
 import java.util.Collections;
 import java.util.List;
-import java.util.Set;
 
 public class PadNewContentListener {
 
@@ -63,7 +62,7 @@ public class PadNewContentListener {
 		if (files != null) {
 			final Path path = files.get(0).toPath();
 
-			final Set<PadContentFactory> connects = registry.getPadContentConnectsForFile(path);
+			final List<PadContentFactory> connects = registry.getPadContentConnectsForFile(path);
 			if (!connects.isEmpty()) {
 				if (connects.size() > 1) { // Multiple content types possible
 					padContentTypeChooser.showOptions(connects, padContent ->
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
index 86b126b0ab85bd7df370c4bbc36de56112877d8f..4c4487aad5502668f8eae1825f6597ea7a00a354 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
@@ -5,6 +5,7 @@ import de.tobias.playpad.layout.desktop.DesktopEditMode;
 import de.tobias.playpad.layout.desktop.DesktopMainLayoutFactory;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadStatus;
+import de.tobias.playpad.pad.content.PadContentFactory;
 import de.tobias.playpad.pad.content.PadContentRegistry;
 import de.tobias.playpad.pad.content.Playlistable;
 import de.tobias.playpad.pad.drag.ContentDragOption;
@@ -28,9 +29,11 @@ import javafx.scene.layout.Pane;
 import javafx.scene.paint.Color;
 
 import java.io.File;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 public class DesktopPadDragListener implements EventHandler<DragEvent> {
 
@@ -90,23 +93,30 @@ public class DesktopPadDragListener implements EventHandler<DragEvent> {
 		event.consume();
 	}
 
+	@SuppressWarnings("java:S1066")
 	private void handleFileDropOver(DragEvent event) {
 		final File file = event.getDragboard().getFiles().get(0);
 		if (file.isFile()) {
 
+			final List<Path> paths = event.getDragboard().getFiles().stream().map(File::toPath).collect(Collectors.toList());
+
 			// built-in file support
-			PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents();
-			List<ContentDragOption> connects = new ArrayList<>(registry.getPadContentConnectsForFile(file.toPath()));
+			final PadContentRegistry registry = PlayPadPlugin.getRegistries().getPadContents();
+			final List<PadContentFactory> supportedContentTypes = registry.getPadContentConnectsForFiles(paths);
+
+			final List<ContentDragOption> contentDragOptions = new ArrayList<>(supportedContentTypes);
 
 			if (currentPad.getContent() instanceof Playlistable) {
-				connects.add(new PlaylistDragOption());
+				if (supportedContentTypes.stream().anyMatch(factory -> factory.getType().equals(currentPad.getContent().getType()))) {
+					contentDragOptions.add(new PlaylistDragOption());
+				}
 			}
 
-			if (!connects.isEmpty()) {
+			if (!contentDragOptions.isEmpty()) {
 				if (fileHud == null) {
 					fileHud = new FileDragOptionView(padViewNode);
 				}
-				fileHud.showOptions(connects);
+				fileHud.showOptions(contentDragOptions);
 
 				event.acceptTransferModes(TransferMode.LINK);
 			}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentRegistry.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentRegistry.java
index 20e7f45d2ef3f798555acda8d0062c9cad47c5f5..a2614a95f34e7f86294ff57beb87777c818e8bcb 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentRegistry.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/PadContentRegistry.java
@@ -12,17 +12,30 @@ public class PadContentRegistry extends ComponentRegistry<PadContentFactory> {
 		super(name);
 	}
 
-	public Set<PadContentFactory> getPadContentConnectsForFile(Path path) throws NoSuchComponentException {
-		Set<PadContentFactory> connects = new HashSet<>();
+	public List<PadContentFactory> getPadContentConnectsForFile(Path paths) throws NoSuchComponentException {
+		return getPadContentConnectsForFiles(Collections.singletonList(paths));
+	}
+
+	public List<PadContentFactory> getPadContentConnectsForFiles(List<Path> paths) throws NoSuchComponentException {
+		final Set<PadContentFactory> connects = new HashSet<>();
 		for (String type : getTypes()) {
 			PadContentFactory connect = getFactory(type);
 			for (String extension : connect.getSupportedTypes()) {
-				if (path.getFileName().toString().toLowerCase().matches("." + extension)) {
+				if (isExtensionMatchingAllFiles(extension, paths)) {
 					connects.add(connect);
 				}
 			}
 		}
-		return connects;
+		return new ArrayList<>(connects);
+	}
+
+	private boolean isExtensionMatchingAllFiles(String extension, List<Path> paths) {
+		for (Path path : paths) {
+			if (!path.getFileName().toString().toLowerCase().matches("." + extension)) {
+				return false;
+			}
+		}
+		return true;
 	}
 
 	public String[] getSupportedFileTypes() throws NoSuchComponentException {