Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8089186

MOUSE_DRAGGED event is not firing reliably for Chipsee capactive touchscreen for Beaglebone Black

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • tbd
    • emb-8u6
    • javafx
    • Linux: Chipsee kernel (modified from TI PSP 3.2 kernel) with Gentoo Linux userspace.

      I created a simple test application to drag an ImageView across the touchscreen. On my PC with a mouse this works correctly but on the Beaglebone the node only moves with a very quick drag gesture. It appears that the mouseDragged event only fires with a very quick drag gesture. I tried using TouchEvents instead and encountered the same issue.

      Please let me know if there are any workarounds for this and thanks for your time.

      Source for test application:

      import javafx.beans.property.DoubleProperty;
      import javafx.beans.property.SimpleDoubleProperty;
      import javafx.scene.CacheHint;
      import javafx.scene.image.ImageView;
      import javafx.scene.input.MouseEvent;

      public class TestShape extends ImageView
      {
      private double startX = 0.0;
      private double startY = 0.0;
      private final DoubleProperty endX = new SimpleDoubleProperty(0.0);
      private final DoubleProperty endY = new SimpleDoubleProperty(0.0);

      public TestShape()
      {
      super("http://icons.iconarchive.com/icons/visualpharm/must-have/256/Information-icon.png");

      setCache(true);
      setCacheHint(CacheHint.SPEED);

      setX(0.0);
      setY(0.0);

      translateXProperty().bind(this.endX);
      translateYProperty().bind(this.endY);

      setOnMousePressed(this::handleMousePressed);
      setOnMouseDragged(this::handleMouseDragged);
      }

      private void handleMousePressed(MouseEvent event)
      {
      this.startX = event.getSceneX() - this.endX.doubleValue();
      this.startY = event.getSceneY() - this.endY.doubleValue();

      System.out.println("mousePressed - sceneX: " + event.getSceneX() +
      ", sceneY: " + event.getSceneY() + ", X: " + this.getX() + ", Y: " +
      this.getY() + ", translateX: " + this.getTranslateX() + ", translateY: " +
      this.getTranslateY() + ", eventX: " + event.getX() + ", eventY: " +
      event.getY());
      }

      private void handleMouseDragged(MouseEvent event)
      {
      this.endX.set(event.getSceneX() - this.startX);
      this.endY.set(event.getSceneY() - this.startY);

      System.out.println("mouseDragged - sceneX: " + event.getSceneX() +
      ", sceneY: " + event.getSceneY() + ", X: " + this.getX() + ", Y: " +
      this.getY() + ", translateX: " + this.getTranslateX() + ", translateY: " +
      this.getTranslateY() + ", eventX: " + event.getX() + ", eventY: " +
      event.getY());
      }
      }

      --------------------------------

      import javafx.scene.layout.Pane;

      public class TestContainer extends Pane
      {
      public TestContainer()
      {
      super();

      setMinSize(901, 546);
      setMaxSize(901, 546);
      setPrefSize(901, 546);

      getChildren().add(new TestShape());
      }
      }

      --------------------------------------

      import javafx.application.Application;
      import javafx.geometry.Pos;
      import javafx.scene.Scene;
      import javafx.stage.Stage;
      import javafx.scene.layout.*;

      public class Test extends Application
      {
      @Override
      public void start(Stage primaryStage) throws Exception
      {
      Scene scene = null;
      TestContainer testContainer = null;
      BorderPane borderPane = null;

      testContainer = new TestContainer();
      BorderPane.setAlignment(testContainer, Pos.TOP_CENTER);

      borderPane = new BorderPane();
      borderPane.setCenter(testContainer);

      scene = new Scene(borderPane, 1024, 600);

      primaryStage.setResizable(false);
      primaryStage.setScene(scene);
      primaryStage.show();
      }

      public static void main(String[] args)
      {
      launch(args);
      }
      }

      $ java -server -jar Test.jar

      = PC =
      -after clicking on the Node and moving it one pixel down (works correctly):
      mousePressed - sceneX: 185.0, sceneY: 134.0, X: 0.0, Y: 0.0, translateX: 0.0, translateY: 0.0, eventX: 123.0, eventY: 134.0
      mouseDragged - sceneX: 185.0, sceneY: 135.0, X: 0.0, Y: 0.0, translateX: 0.0, translateY: 1.0, eventX: 123.0, eventY: 135.0

      = Beaglebone Black =
      -very small drag, normal speed (did not actually move the shape due to no mouseDragged event):
      mousePressed - sceneX: 206.0, sceneY: 123.0, X: 0.0, Y: 0.0, translateX: 0.0, translateY: 0.0, eventX: 144.0, eventY: 123.0
      mousePressed - sceneX: 205.0, sceneY: 124.0, X: 0.0, Y: 0.0, translateX: 0.0, translateY: 0.0, eventX: 143.0, eventY: 124.0
      mousePressed - sceneX: 204.0, sceneY: 130.0, X: 0.0, Y: 0.0, translateX: 0.0, translateY: 0.0, eventX: 142.0, eventY: 130.0

      -very quick drag (moved the shape but not to quite to location of my finger)
      mousePressed - sceneX: 189.0, sceneY: 126.0, X: 0.0, Y: 0.0, translateX: 0.0, translateY: 0.0, eventX: 127.0, eventY: 126.0
      mousePressed - sceneX: 189.0, sceneY: 129.0, X: 0.0, Y: 0.0, translateX: 0.0, translateY: 0.0, eventX: 127.0, eventY: 129.0
      mousePressed - sceneX: 190.0, sceneY: 185.0, X: 0.0, Y: 0.0, translateX: 0.0, translateY: 0.0, eventX: 128.0, eventY: 185.0
      mouseDragged - sceneX: 191.0, sceneY: 233.0, X: 0.0, Y: 0.0, translateX: 1.0, translateY: 48.0, eventX: 129.0, eventY: 233.0
      mouseDragged - sceneX: 188.0, sceneY: 281.0, X: 0.0, Y: 0.0, translateX: -2.0, translateY: 96.0, eventX: 125.0, eventY: 233.0
      mouseDragged - sceneX: 186.0, sceneY: 328.0, X: 0.0, Y: 0.0, translateX: -4.0, translateY: 143.0, eventX: 126.0, eventY: 232.0
      mouseDragged - sceneX: 184.0, sceneY: 366.0, X: 0.0, Y: 0.0, translateX: -6.0, translateY: 181.0, eventX: 126.0, eventY: 223.0
      mousePressed - sceneX: 183.0, sceneY: 405.0, X: 0.0, Y: 0.0, translateX: -6.0, translateY: 181.0, eventX: 127.0, eventY: 224.0
      mousePressed - sceneX: 182.0, sceneY: 417.0, X: 0.0, Y: 0.0, translateX: -6.0, translateY: 181.0, eventX: 126.0, eventY: 236.0
      mousePressed - sceneX: 175.0, sceneY: 426.0, X: 0.0, Y: 0.0, translateX: -6.0, translateY: 181.0, eventX: 119.0, eventY: 245.0

      # cat /proc/bus/input/devices:
      I: Bus=0000 Vendor=0000 Product=0000 Version=0000
      N: Name="ft5x06_ts"
      P: Phys=
      S: Sysfs=/devices/virtual/input/input0
      U: Uniq=
      H: Handlers=mouse0 event0
      B: PROP=0
      B: EV=b
      B: KEY=400 0 0 0 0 0 0 0 0 0 0
      B: ABS=1000003

      I: Bus=0000 Vendor=0000 Product=0000 Version=0000
      N: Name="ti-tsc"
      P: Phys=
      S: Sysfs=/devices/platform/omap/ti_tscadc/tsc/input/input1
      U: Uniq=
      H: Handlers=mouse1 event1
      B: PROP=0
      B: EV=b
      B: KEY=400 0 0 0 0 0 0 0 0 0 0
      B: ABS=1000003


      # cat /proc/bus/input/handlers:
      N: Number=0 Name=rfkill
      N: Number=1 Name=kbd
      N: Number=2 Name=sysrq (filter)
      N: Number=3 Name=mousedev Minor=32
      N: Number=4 Name=evdev Minor=64

            Unassigned Unassigned
            jamesjfx James (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Imported: