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.
