diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index d36cee921cab9ce00daf3b7e440c35fb7c19f76d..e19862184dafb6901f492595b64b12815ae7553e 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -266,6 +266,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 			colorButton.setSelected(true);
 		}
 
+		mainViewController.getPadViews().forEach(i -> i.getViewController().updateButtonDisable());
 	}
 
 	private void initLayoutMenu() {
@@ -561,7 +562,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	void dragMenuHandler(ActionEvent event) {
 		connect.setEditMode(DesktopEditMode.DRAG);
 	}
-	
+
 	@FXML
 	void pageMenuHandler(ActionEvent event) {
 		connect.setEditMode(DesktopEditMode.PAGE);
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
index b057c89da57f7b36794a7d3ff4fe9b57bf149a88..18169687bfb0e6df89c1401a52eb65c88dd0307b 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadDragListener.java
@@ -23,6 +23,7 @@ import de.tobias.playpad.view.FileDragOptionView;
 import de.tobias.playpad.view.PadDragOptionView;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.utils.util.FileUtils;
+import javafx.event.EventHandler;
 import javafx.scene.SnapshotParameters;
 import javafx.scene.image.WritableImage;
 import javafx.scene.input.ClipboardContent;
@@ -34,7 +35,7 @@ import javafx.scene.input.TransferMode;
 import javafx.scene.layout.Pane;
 import javafx.scene.paint.Color;
 
-public class DesktopPadDragListener {
+public class DesktopPadDragListener implements EventHandler<DragEvent> {
 
 	private static final String PADINDEX_DATATYPE = "de.tobias.playpad.padindex";
 	private static final DataFormat dataFormat = new DataFormat(PADINDEX_DATATYPE);
@@ -53,14 +54,33 @@ public class DesktopPadDragListener {
 		this.connect = connect;
 
 		this.padView = view.getRootNode();
+	}
 
-		// Drag and Drop
+	public void addListener() {
 		this.padView.setOnDragOver(event -> dragOver(event));
 		this.padView.setOnDragExited(event -> dragExited());
 		this.padView.setOnDragDropped(event -> dragDropped(event));
 		this.padView.setOnDragDetected(event -> dragDetacted(event));
 	}
 
+	public void removeListener() {
+		this.padView.setOnDragOver(null);
+		this.padView.setOnDragExited(null);
+		this.padView.setOnDragDropped(null);
+		this.padView.setOnDragDetected(null);
+	}
+
+	@Override
+	public void handle(DragEvent event) {
+		if (event.getEventType() == DragEvent.DRAG_OVER) {
+			dragOver(event);
+		} else if (event.getEventType() == DragEvent.DRAG_EXITED) {
+			dragExited();
+		} else if (event.getEventType() == DragEvent.DRAG_DROPPED) {
+			dragDropped(event);
+		}
+	}
+
 	private void dragOver(DragEvent event) {
 		if (Profile.currentProfile().getProfileSettings().isLocked()) {
 			return;
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
index 2864463ce36a8e1fd12b121aa54f9be40d705924..4512069665c2458ad114726081f475473827e80e 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java
@@ -387,15 +387,15 @@ public class DesktopPadView implements IPadView {
 		pulseTranslation.play();
 	}
 
-	public void clearIndex() {
+	public void clearIndexLabel() {
 		indexLabel.setText("");
 	}
 
-	public void clearTime() {
+	public void clearTimeLabel() {
 		timeLabel.setText("");
 	}
 
-	public void clearPreviewContent() {
+	public void clearPreviewContentView() {
 		if (previewContent != null) {
 			previewContent.deinit();
 		}
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java
index 83794b007579e3565d00072ef614a73f5bc3209f..581856e489b60ae6b02de541129d64abb851ac0f 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java
@@ -59,11 +59,13 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 
 	private DesktopPadDragListener padDragListener;
 
-	private DesktopMainLayoutConnect connect;
+	private static DesktopMainLayoutConnect connect;
 
 	public DesktopPadViewController(DesktopPadView padView, DesktopMainLayoutConnect connect) {
 		this.padView = padView;
-		this.connect = connect;
+
+		if (DesktopPadViewController.connect != connect) // Set once
+			DesktopPadViewController.connect = connect;
 
 		padLockedListener = new PadLockedListener(this);
 		padStatusListener = new PadStatusListener(this);
@@ -103,16 +105,17 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 			padContentListener.setPad(pad);
 			padPositionListener.setPad(pad);
 
-			// Pad Content Chnage
+			// Add Listener
 			pad.contentProperty().addListener(padContentListener);
-			// Pad Status Change
 			pad.statusProperty().addListener(padStatusListener);
 
-			// First Listener call with new data
+			// Inital Listener call with new data
 			padContentListener.changed(null, null, pad.getContent()); // Add Duration listener
 			padStatusListener.changed(null, null, pad.getStatus());
 
+			// Add Drag and Drop Listener
 			padDragListener = new DesktopPadDragListener(pad, padView, connect);
+			padDragListener.addListener();
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -124,15 +127,14 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 	@Override
 	public void removePad() {
 		if (padView != null && pad != null) {
-
-			padView.clearIndex();
-			padView.clearPreviewContent();
-			padView.clearTime();
-
+			// Clear VIew
+			padView.clearIndexLabel();
+			padView.clearPreviewContentView();
+			padView.clearTimeLabel();
 			padView.setTriggerLabelActive(false);
-
 			padView.loopLabelVisibleProperty().unbind();
 
+			// Remove Bindings & Listener
 			pad.contentProperty().removeListener(padContentListener);
 			pad.statusProperty().removeListener(padStatusListener);
 
@@ -142,6 +144,8 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 				durationable.positionProperty().removeListener(padPositionListener);
 			}
 			pad.setController(null);
+
+			padDragListener.removeListener();
 			padDragListener = null;
 
 			// GUI Cleaning
@@ -382,10 +386,20 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 			padView.getSettingsButton().setDisable(false);
 		}
 
+		// Disable Settings and New wenn Locked
 		if (Profile.currentProfile().getProfileSettings().isLocked()) {
 			padView.getNewButton().setDisable(true);
 			padView.getSettingsButton().setDisable(true);
 		}
+		
+		// Alles Desktivieren, wenn nicht Play Mode
+		if (connect.getEditMode() != DesktopEditMode.PLAY) {
+			padView.getPlayButton().setDisable(true);
+			padView.getPauseButton().setDisable(true);
+			padView.getStopButton().setDisable(true);
+			padView.getNewButton().setDisable(true);
+			padView.getSettingsButton().setDisable(true);
+		}
 	}
 
 	@Override