aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Wagner <wbadam@users.noreply.github.com>2017-02-22 09:59:55 +0200
committerPekka Hyvönen <pekka@vaadin.com>2017-02-22 09:59:55 +0200
commitaf1412adad6131a9603dc6854186ec896fb90f61 (patch)
tree7ccfc8405fb44704a498e71a41b12f7c4c7373fe
parent591312833dd77060ba62e0a6c4d2c77167b4db84 (diff)
downloadvaadin-framework-af1412adad6131a9603dc6854186ec896fb90f61.tar.gz
vaadin-framework-af1412adad6131a9603dc6854186ec896fb90f61.zip
Replace usage of getParent() to prevent client side NPE during onUnregister (#8648)
* Replace usage of getParent() to prevent client side NPE during onUnregister() (#8646)
-rw-r--r--client/src/main/java/com/vaadin/client/extensions/DragSourceExtensionConnector.java10
-rw-r--r--client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java10
2 files changed, 18 insertions, 2 deletions
diff --git a/client/src/main/java/com/vaadin/client/extensions/DragSourceExtensionConnector.java b/client/src/main/java/com/vaadin/client/extensions/DragSourceExtensionConnector.java
index 25e2912b7a..532b9877fc 100644
--- a/client/src/main/java/com/vaadin/client/extensions/DragSourceExtensionConnector.java
+++ b/client/src/main/java/com/vaadin/client/extensions/DragSourceExtensionConnector.java
@@ -21,6 +21,7 @@ import java.util.Map;
import com.google.gwt.dom.client.DataTransfer;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ComponentConnector;
import com.vaadin.client.ServerConnector;
import com.vaadin.event.dnd.DragSourceExtension;
@@ -45,8 +46,15 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector {
private final EventListener dragStartListener = this::onDragStart;
private final EventListener dragEndListener = this::onDragEnd;
+ /**
+ * Widget of the drag source component.
+ */
+ private Widget dragSourceWidget;
+
@Override
protected void extend(ServerConnector target) {
+ dragSourceWidget = ((ComponentConnector) target).getWidget();
+
Element dragSourceElement = getDraggableElement();
dragSourceElement.setDraggable(Element.DRAGGABLE_TRUE);
@@ -124,7 +132,7 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector {
* @return the draggable element in the parent widget.
*/
protected Element getDraggableElement() {
- return ((ComponentConnector) getParent()).getWidget().getElement();
+ return dragSourceWidget.getElement();
}
private native void setEffectAllowed(DataTransfer dataTransfer,
diff --git a/client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java b/client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java
index 5d72a76696..3a9cbbfe84 100644
--- a/client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java
+++ b/client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java
@@ -25,6 +25,7 @@ import com.google.gwt.dom.client.BrowserEvents;
import com.google.gwt.dom.client.DataTransfer;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ComponentConnector;
import com.vaadin.client.ServerConnector;
import com.vaadin.event.dnd.DropTargetExtension;
@@ -51,8 +52,15 @@ public class DropTargetExtensionConnector extends AbstractExtensionConnector {
private final EventListener dragLeaveListener = this::onDragLeave;
private final EventListener dropListener = this::onDrop;
+ /**
+ * Widget of the drop target component.
+ */
+ private Widget dropTargetWidget;
+
@Override
protected void extend(ServerConnector target) {
+ dropTargetWidget = ((ComponentConnector) target).getWidget();
+
EventTarget dropTarget = getDropTargetElement().cast();
// dragenter event
@@ -91,7 +99,7 @@ public class DropTargetExtensionConnector extends AbstractExtensionConnector {
* @return the drop target element in the parent widget.
*/
protected Element getDropTargetElement() {
- return ((ComponentConnector) getParent()).getWidget().getElement();
+ return dropTargetWidget.getElement();
}
/**