diff options
author | Adam Wagner <wbadam@users.noreply.github.com> | 2017-02-22 09:59:55 +0200 |
---|---|---|
committer | Pekka Hyvönen <pekka@vaadin.com> | 2017-02-22 09:59:55 +0200 |
commit | af1412adad6131a9603dc6854186ec896fb90f61 (patch) | |
tree | 7ccfc8405fb44704a498e71a41b12f7c4c7373fe | |
parent | 591312833dd77060ba62e0a6c4d2c77167b4db84 (diff) | |
download | vaadin-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.java | 10 | ||||
-rw-r--r-- | client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java | 10 |
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(); } /** |