Browse Source

Replace usage of getParent() to prevent client side NPE during onUnregister (#8648)

* Replace usage of getParent() to prevent client side NPE during onUnregister() (#8646)
tags/8.1.0.alpha1
Adam Wagner 7 years ago
parent
commit
af1412adad

+ 9
- 1
client/src/main/java/com/vaadin/client/extensions/DragSourceExtensionConnector.java View File

@@ -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,

+ 9
- 1
client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java View File

@@ -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();
}

/**

Loading…
Cancel
Save