Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit 3a3100a

Browse files
authored
Make RootWidget focus more reliable. Fixes #2055. (#2058)
1 parent 17029fe commit 3a3100a

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/RootWidget.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
import android.content.Context;
44
import android.util.AttributeSet;
5-
import android.view.View;
5+
import android.view.MotionEvent;
66

77
public class RootWidget extends UIWidget {
88
private Runnable mOnClickCallback;
9+
private boolean mTouched = true;
910

1011
public RootWidget(Context aContext) {
1112
super(aContext);
@@ -31,14 +32,29 @@ protected void initializeWidgetPlacement(WidgetPlacement aPlacement) {
3132

3233
private void initialize(Context aContext) {
3334
setFocusable(true);
35+
}
3436

35-
setOnClickListener(v -> {
36-
requestFocus();
37-
requestFocusFromTouch();
38-
if (mOnClickCallback != null) {
39-
mOnClickCallback.run();
40-
}
41-
});
37+
@Override
38+
public boolean onTouchEvent(MotionEvent event) {
39+
switch (event.getAction()) {
40+
case MotionEvent.ACTION_DOWN:
41+
mTouched = true;
42+
break;
43+
case MotionEvent.ACTION_UP:
44+
if (mTouched) {
45+
mTouched = false;
46+
requestFocus();
47+
requestFocusFromTouch();
48+
if (mOnClickCallback != null) {
49+
mOnClickCallback.run();
50+
}
51+
}
52+
break;
53+
case MotionEvent.ACTION_CANCEL:
54+
mTouched = false;
55+
break;
56+
}
57+
return super.onTouchEvent(event);
4258
}
4359

4460
public void setClickCallback(Runnable aRunnable) {

0 commit comments

Comments
 (0)