I don't know, it's hard to tell from a review of the code.

On Wednesday, March 3, 2021 at 12:52:36 PM UTC+2 P5music wrote:

> I need the information whether this issue could impact iOS or not.
> Is it possible to know this while the issue is not fixed yet on Android? 
> If it is not on iOS too, for example thanks to more consistent APIs, I 
> could start testing on those devices, but some kind of action has to be 
> taken on my side, so it would be useful to know in advance.
> Thanks in advance
>
> Il giorno venerdì 26 febbraio 2021 alle 08:49:44 UTC+1 P5music ha scritto:
>
>> 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/5a87ff65-c33c-4602-b0f2-cfe9bc977773n%40googlegroups.com.

Reply via email to