Ok so it is something that is on iOS too probably, according to your 
analysis.
Now I think it is importat to fix the filed issue
because it is very simple, a matter of just looking at the code and 
understanding that wrong timing.
Even if it is a non-enterprise issue, it's blocking of a very important 
component, crucial for modern app development in many cases.
It is also completely blocking my app, so it is different from other 
non-blocking issues.
It's just a matter of time that an enterprise customer stumbles upon it. 
Better it does not happen and they find the component correctly working in 
the first place.

Regards

Il giorno lunedì 8 marzo 2021 alle 03:36:18 UTC+1 Shai Almog ha scritto:

> The long press isn'5 the problem. It's the press/release that aren't sent 
> since the browser component grabs them. That's the correct behavior.
>
> On Sunday, March 7, 2021 at 10:38:45 AM UTC+2 P5music wrote:
>
>> So, as I said, the LongPressListener method is not called, so it has to 
>> be fixed, but I recall that you said that I should handle those events with 
>> Javascript.
>> Said that,
>> whatever method will work when the issue is fixed (I hope that on iOS the 
>> issue is not present but I have yet to check)
>> it seems that the code
>> if(touchesArray != nil) {
>>         [touchesArray removeAllObjects];
>>     }
>> in
>> (void)updateCanvas:(BOOL)animated 
>>
>> could remove the events
>> when the text-selection-interface is triggered.
>> It seems that you used the gestures, not the touches so it could lead to 
>> this behaviour.
>> I can manage the non-wanted mouse events from long-pressing the  iFrames
>> but
>> the interface for text-selection has not to appear.
>> Regards
>>
>> Il giorno domenica 7 marzo 2021 alle 03:20:06 UTC+1 Shai Almog ha scritto:
>>
>>> A long press is triggered in the Codename One layer not in the native 
>>> layer. We detect it when receiving a press and not receiving a release 
>>> after a while.
>>>
>>> On Saturday, March 6, 2021 at 10:11:37 AM UTC+2 P5music wrote:
>>>
>>>> And what about the possibility that the long-press event not being 
>>>> fired is a byproduct of the text-selection-interface
>>>> so this code
>>>> if(touchesArray != nil) {
>>>>         [touchesArray removeAllObjects];
>>>>     }
>>>> in
>>>> (void)updateCanvas:(BOOL)animated 
>>>>
>>>> effectively remove the touches when the interface appears.
>>>>
>>>> So the bug would be: 
>>>> why the text-selection-interface appears also when the iFrames are set 
>>>> not to process pointer events?
>>>>
>>>> Fixing this, the text-selection-interface would not be triggered and 
>>>> long-press events would be fired again and go through the event bubble 
>>>> chain.
>>>> Regards
>>>> Il giorno sabato 6 marzo 2021 alle 05:50:55 UTC+1 Shai Almog ha scritto:
>>>>
>>>>> That's an array for the multi-touch behavior not a buffer of touches. 
>>>>> That means that if you have 2, 3+ fingers on the screen we'll get the 
>>>>> events for all of them.
>>>>>
>>>>> On Friday, March 5, 2021 at 10:47:50 AM UTC+2 P5music wrote:
>>>>>
>>>>>> Well, I would like to compare to the relevant  Android code, because 
>>>>>> I meant that code, however you pointed me to the iOS code so I looked at 
>>>>>> that.
>>>>>>
>>>>>> If the Android and iOS are similar, I can see that an array of 
>>>>>> touches is managed and some touches could be lost.
>>>>>>
>>>>>> Some code fragments that hint at that direction:
>>>>>>
>>>>>> things like
>>>>>> pointerDraggedC(xArray, yArray, [touches count]);
>>>>>> or
>>>>>>  pointerDraggedC(xArray, yArray, [touchesArray count]);
>>>>>> in
>>>>>> -(void)touchesBegan
>>>>>> -(void)touchesEnded
>>>>>> -(void)touchesCancelled
>>>>>> or also
>>>>>> skipNextTouch
>>>>>> all seem to prune the events.
>>>>>>
>>>>>> But I think that also the text-selection interface that pops up on 
>>>>>> Android could lead to a cancellation of events if this code is also in 
>>>>>> Android:
>>>>>> if(touchesArray != nil) {
>>>>>>         [touchesArray removeAllObjects];
>>>>>>     }
>>>>>> in
>>>>>> (void)updateCanvas:(BOOL)animated 
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>> Il giorno venerdì 5 marzo 2021 alle 05:09:19 UTC+1 Shai Almog ha 
>>>>>> scritto:
>>>>>>
>>>>>>> It's generally the touch events in the glviewcontroller file. From 
>>>>>>> there you can just follow the flow all the way out to the Java code in 
>>>>>>> IOSImplementation. 
>>>>>>>
>>>>>>> On Thursday, March 4, 2021 at 2:40:18 PM UTC+2 P5music wrote:
>>>>>>>
>>>>>>>> Please can you point me to some source code so I can inspect it 
>>>>>>>> about the issue I filed?
>>>>>>>> It's about CEF so it boils down to some interface for mouse events.
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>>
>>>>>>>> Il giorno giovedì 4 marzo 2021 alle 03:09:12 UTC+1 Shai Almog ha 
>>>>>>>> scritto:
>>>>>>>>
>>>>>>>>> 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/f9c5f075-e229-45c2-9fe2-5cbc99b7ad64n%40googlegroups.com.

Reply via email to