From 08ba394b1199797e3f0be7efead66e0b5393b5c3 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Fri, 24 May 2013 17:19:51 +0300 Subject: Disable drag&drop when source or target component is disabled, re-implementation of 6.8 fix for #11801 Change-Id: Iacd167ad7075620dae59ff2c7789efaf32521c59 --- server/src/com/vaadin/server/DragAndDropService.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'server/src') diff --git a/server/src/com/vaadin/server/DragAndDropService.java b/server/src/com/vaadin/server/DragAndDropService.java index 5a54b5ae3a..38c055eb1a 100644 --- a/server/src/com/vaadin/server/DragAndDropService.java +++ b/server/src/com/vaadin/server/DragAndDropService.java @@ -64,6 +64,16 @@ public class DragAndDropService implements VariableOwner, ClientConnector { public void changeVariables(Object source, Map variables) { Object owner = variables.get("dhowner"); + final Component sourceComponent = (Component) variables + .get("component"); + if (sourceComponent != null && !sourceComponent.isEnabled()) { + // source component not supposed to be enabled + getLogger().warning( + "Client dropped from " + sourceComponent + + " even though it's disabled"); + return; + } + // Validate drop handler owner if (!(owner instanceof DropTarget)) { getLogger() @@ -74,6 +84,15 @@ public class DragAndDropService implements VariableOwner, ClientConnector { // owner cannot be null here DropTarget dropTarget = (DropTarget) owner; + + if (!dropTarget.isEnabled()) { + getLogger() + .warning( + "Client dropped on " + owner + + " even though it's disabled"); + return; + } + lastVisitId = (Integer) variables.get("visitId"); // request may be dropRequest or request during drag operation (commonly -- cgit v1.2.3