-
Bug
-
Resolution: Unresolved
-
P4
-
emb-8u6
-
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
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