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/3fc1eaaf-0c15-45f5-a99a-23beb064dd58n%40googlegroups.com.

Reply via email to