diff options
3 files changed, 13 insertions, 36 deletions
diff --git a/client/src/main/java/com/vaadin/client/ui/VButton.java b/client/src/main/java/com/vaadin/client/ui/VButton.java index 3bb6c5a1e8..611eb692cc 100644 --- a/client/src/main/java/com/vaadin/client/ui/VButton.java +++ b/client/src/main/java/com/vaadin/client/ui/VButton.java @@ -207,7 +207,7 @@ public class VButton extends FocusWidget implements ClickHandler { clickPending = true; setFocus(true); DOM.setCapture(getElement()); - isCapturing = isCapturingEnabled(); + isCapturing = true; addStyleName(CLASSNAME_PRESSED); } break; @@ -225,7 +225,7 @@ public class VButton extends FocusWidget implements ClickHandler { break; case Event.ONMOUSEMOVE: clickPending = false; - if (isCapturing) { + if (isCapturing && !isDraggable()) { // Prevent dragging (on other browsers); DOM.eventPreventDefault(event); } @@ -421,29 +421,13 @@ public class VButton extends FocusWidget implements ClickHandler { } /** - * Enables or disables the widget's capturing of mouse events with the mouse - * held down. - * - * @param enabled - * {@literal true} if capturing enabled, {@literal false} - * otherwise + * Returns if this button has been made <code>draggable</code> or not. * - * @since 8.1 - */ - public void setCapturingEnabled(boolean enabled) { - capturingEnabled = enabled; - } - - /** - * Returns if the widget's capturing of mouse events are enabled. - * - * @return {@literal true} if mouse capturing is enabled, {@literal false} + * @return {@literal true} if draggable is enabled, {@literal false} * otherwise - * - * @since 8.1 */ - public boolean isCapturingEnabled() { - return capturingEnabled; + private boolean isDraggable() { + return getElement().getPropertyBoolean("draggable"); } private static native int getHorizontalBorderAndPaddingWidth(Element elem) diff --git a/client/src/main/java/com/vaadin/client/ui/button/ButtonConnector.java b/client/src/main/java/com/vaadin/client/ui/button/ButtonConnector.java index f8e51a5dcc..b0d17465bb 100644 --- a/client/src/main/java/com/vaadin/client/ui/button/ButtonConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/button/ButtonConnector.java @@ -129,15 +129,4 @@ public class ButtonConnector extends AbstractComponentConnector } - @Override - public void onDragSourceAttached() { - // Disable mouse event capturing to make the widget draggable - getWidget().setCapturingEnabled(false); - } - - @Override - public void onDragSourceDetached() { - // Reset mouse event capturing - getWidget().setCapturingEnabled(true); - } } diff --git a/uitest/src/main/java/com/vaadin/tests/dnd/DraggableButton.java b/uitest/src/main/java/com/vaadin/tests/dnd/DraggableButton.java index b154045b54..bd6b86bd54 100644 --- a/uitest/src/main/java/com/vaadin/tests/dnd/DraggableButton.java +++ b/uitest/src/main/java/com/vaadin/tests/dnd/DraggableButton.java @@ -15,6 +15,7 @@ */ package com.vaadin.tests.dnd; +import com.vaadin.annotations.Widgetset; import com.vaadin.server.Page; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractTestUIWithLog; @@ -25,12 +26,14 @@ import com.vaadin.ui.Layout; import com.vaadin.ui.dnd.DragSourceExtension; import com.vaadin.ui.dnd.DropTargetExtension; +@Widgetset("com.vaadin.DefaultWidgetSet") public class DraggableButton extends AbstractTestUIWithLog { @Override protected void setup(VaadinRequest request) { - Button draggableButton = new Button("Draggable Button"); + Button draggableButton = new Button("Draggable Button", + event -> log("clicked draggable button")); DragSourceExtension<Button> dragSourceExtension = new DragSourceExtension<>( draggableButton); dragSourceExtension.setDataTransferText( @@ -44,7 +47,8 @@ public class DraggableButton extends AbstractTestUIWithLog { .addDropListener(event -> log(event.getDataTransferText())); Layout layout = new HorizontalLayout(); - layout.addComponents(draggableButton, dropTarget); + layout.addComponents(draggableButton, dropTarget, new Button( + "another button", event -> log("click on another button"))); addComponent(layout); // Add styling @@ -62,6 +66,6 @@ public class DraggableButton extends AbstractTestUIWithLog { @Override protected String getTestDescription() { - return "Test if Button is draggable"; + return "Test if Button is draggable, and it won't steal all other clicks"; } } |