CEF BrowserComponent: mouse events handled differently in Android device
than simulator · Issue #3378 · codenameone/CodenameOne (github.com)
<https://github.com/codenameone/CodenameOne/issues/3378>
Il giorno venerdì 26 febbraio 2021 alle 07:09:36 UTC+1 Shai Almog ha
scritto:
> OK, is this filed as an issue so I can assign it to Steve?
>
> On Thursday, February 25, 2021 at 12:50:14 PM UTC+2 P5music wrote:
>
>> I created a test case but before filing an issue I have to point out what
>> follows. (You find the relevant code below)
>> The test app features a CEF BrowserComponent with some text inside.
>> Text lines are not so long horizontally to fill the view, so the right
>> part is empty.
>> Also the bottom part is empty because only a few text lines are in the
>> HTML.
>>
>> On the Android device:
>> I can click on text and I have the mousedown/mouseup sequence (events are
>> fired and callbacks are issued).
>> I can click on the empty part on the right and I have the
>> mousedown/mouseup sequence (events are fired and callbacks are issued).
>>
>> If I click on the empty part on the bottom I have no callbacks.
>>
>> If I long-press on the text the Android text-selection interface appears.
>> If I long-press on the empty part on the right no callbacks are issued
>> (this is the issue this thread is about but it is entwined with something
>> else, read on).
>>
>> I remind that the empty part on the right is a DIV with the callbacks on
>> it.
>> And the bottom part is really empty.
>>
>> Sofor my app to work
>> -the text should not be selectable in the BrowserComponent because in my
>> app the long-press on any iFrame in the list is just for launching the
>> pop-up menu.
>> -the long-press events should be issued also on the text, if present in
>> the iFrames.
>>
>> How to have those two specs satisfied?
>> It seems that there are two questions, one is maybe the simplest to
>> solve, the other is maybe a bug to file an issue about.
>> And the two are together, it seems.
>> (They are not seen in the simulator)
>>
>> Regards
>>
>> public void start() {
>> if(current != null){
>> current.show();
>> return;
>> }
>> Form hi = new Form("Hi World");
>> hi.setLayout(new BorderLayout());
>> hi.add(BorderLayout.NORTH,new Label("Hi World"));
>> BrowserComponent bc=new BrowserComponent();
>>
>> bc.addWebEventListener("onLoad", new ActionListener() {
>> @Override
>> public void actionPerformed(ActionEvent evt) {
>> System.out.println("onload");
>> bc.addJSCallback("var div=document.getElementById('divId');" +
>> "callMouseDown =function(){callback.onSuccess('mousedown');};callMouseUp
>> =function(){callback.onSuccess('mouseup');};"+
>> "div.addEventListener('mousedown', function () {"+
>> "callMouseDown();"+
>> "});"+
>> "div.addEventListener('mouseup', function () {"+
>> "callMouseUp();"+
>> "});"
>> , new SuccessCallback<BrowserComponent.JSRef>() {
>> @Override
>> public void onSucess(BrowserComponent.JSRef value) {
>> System.out.println("webview callback value="+value.getValue());
>> }});
>> }
>> });
>>
>> bc.setPage("<HTML><BODY><DIV id='divId'
>> ><DIV>TEST</BR>TEST</BR>TEST</BR>TEST</BR>TEST</BR>TEST</BR>TEST</BR></DIV></DIV></BODY></HTML>","");
>>
>> hi.add(BorderLayout.CENTER,bc);
>> hi.show();
>> }
>> Il giorno mercoledì 24 febbraio 2021 alle 03:16:36 UTC+1 Shai Almog ha
>> scritto:
>>
>>> If it's in JavaScript then it sounds like a bug. Can you extract a test
>>> case and file an issue?
>>>
>>> On Tuesday, February 23, 2021 at 11:27:59 AM UTC+2 P5music wrote:
>>>
>>>> I am talking about are handled in javascript
>>>> indeed I explicitly wrote about callbacks.
>>>> (the longpress listener also is not called, it is in Java just for
>>>> testing purposes as a fallback but it is not useful because it is not
>>>> called either)
>>>>
>>>> This is the problem:
>>>> The first event should be "mousedown"
>>>> and it is in the simulator, whatever kind of click type the user does,
>>>> i.e. click or longpress.
>>>> The second event should be "mouseup"
>>>> and it is in the simuator, whatever kind of click type the user does,
>>>> i.e. click or longpress, just the difference is timing.
>>>> The Javascript callbacks work and a suitable part of the code is called
>>>> for each of the above mentioned events.
>>>> (It is not a simulator bug, it works as it should)
>>>> So In case of click those events are fired correctly both in simulator
>>>> and also in the Android device.
>>>>
>>>> Instead
>>>> in case of long press on the real Android device only click is handled
>>>> correctly and I see the correct sequence of mouse events,
>>>> but with long press those events are not fired, like they are gobbled
>>>> down.
>>>> So both the down event and the up event are not handled, they do not
>>>> trigger the callbacks, they are not fired ore they are gobbled.
>>>>
>>>> It seems that the WebView has a timer itself and decides whether to
>>>> fire the first event according to the timing of the second.
>>>>
>>>> Regards
>>>>
>>>> Il giorno martedì 23 febbraio 2021 alle 04:04:20 UTC+1 Shai Almog ha
>>>> scritto:
>>>>
>>>>> That sounds like a bug in the simulator not on the device. If you
>>>>> click in the browser component the event should be delivered there. Not
>>>>> to
>>>>> Codename One. You need to intercept it in JavaScript.
>>>>>
>>>>> On Monday, February 22, 2021 at 10:22:12 AM UTC+2 P5music wrote:
>>>>>
>>>>>> The click is on the iFrames inside the HTML, so it is on the BC.
>>>>>> It works on the simulator:
>>>>>> click and long-press gestures are handled with a timer and comparing
>>>>>> the timestamps.
>>>>>> The issue is that
>>>>>> when I long-press on the BC when the app runs on the real Android
>>>>>> device,
>>>>>> even the first mouse event (mousedown) is not fired,
>>>>>> it is like the BC has a timer itself and does not fire the mousedown
>>>>>> event if the mouseup event is too far in time,
>>>>>> while in the simulator the mousedown event is issued every time,
>>>>>> regardless of the timing of the subsequent mouseup event.
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>> Il giorno lunedì 22 febbraio 2021 alle 03:29:37 UTC+1 Shai Almog ha
>>>>>> scritto:
>>>>>>
>>>>>>> Are you long clicking on the browser component or somewhere else?
>>>>>>> It's unclear from the question. Do you have a screenshot of the place
>>>>>>> you're clicking on?
>>>>>>>
>>>>>>> On Sunday, February 21, 2021 at 1:17:56 PM UTC+2 P5music wrote:
>>>>>>>
>>>>>>>> P5music
>>>>>>>> 12:16 (ora)
>>>>>>>> a CodenameOne Discussions
>>>>>>>> I am testing my CodenameApp on a real Android device.
>>>>>>>> The main screen has a table layout with a container on the left.
>>>>>>>> The container has a container inside, that has a BrowserComponent
>>>>>>>> inside in BorderLayout.CENTER.
>>>>>>>> The issue is not about layout.
>>>>>>>>
>>>>>>>> I have some callbacks for the BC that on the simulator handle
>>>>>>>> mouseup/down on the iFrames in the HTML.
>>>>>>>> That callback work also for handing long-press on the same HTML
>>>>>>>> elements.
>>>>>>>> Everything is fine. If I add a LongPressListener it gets not called
>>>>>>>> but it is not needed at all.
>>>>>>>>
>>>>>>>> When using the app on the real Android device the clicks are
>>>>>>>> handled as in the simulator
>>>>>>>> while
>>>>>>>> the long press is not.
>>>>>>>> I debugged and it seems that the events are not fired at all.
>>>>>>>> I mean,
>>>>>>>> a click is mousedown and mouseup within a short time range.
>>>>>>>> a longpress is the same where the mouseup event is after 500ms. The
>>>>>>>> app uses a timer.
>>>>>>>>
>>>>>>>> But the initial mousedown event itself is not called, and also the
>>>>>>>> LongPressListener is not called.
>>>>>>>>
>>>>>>>> So what is happening? This is very important because the long-press
>>>>>>>> is for displaying a pop-up menu. But only clicks work.
>>>>>>>> Thanks in advance
>>>>>>>>
>>>>>>>
--
You received this message because you are subscribed to the Google Groups
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/codenameone-discussions/f4883c77-0eb3-4d4a-89c4-91adaf679b93n%40googlegroups.com.