The function isMouseEventOutside() was wrong. Now I fixed it.

Il giorno mercoledì 30 dicembre 2020 alle 09:44:54 UTC+1 P5music ha scritto:

> Ok, preventing the BC's from processing the events should not be difficult.
> But the strange thing is that the right container in the table layout does 
> not receive the events like the left one (except the small BC). And so 
> happens to the FAB.
> For example, if I click on a button in the left container the dialog goes 
> away, whilst if I click on a button of the right container nothing happens.
> (the left container is bound to the FAB, and the FAB is insensitive too)
> Maybe unbinding the left container from FAB would lead to the entire 
> layout being insensitive to mouse events? Or something similar? Would it be 
> a possible workaround?
> Regards
> Il giorno mercoledì 30 dicembre 2020 alle 05:09:14 UTC+1 Shai Almog ha 
> scritto:
>
>> Sorry about that. I forgot your app is mostly HTML. That's problematic as 
>> we don't have the same amount of control over native as we do over our 
>> code. 
>> The reason is simple. All events go through the parent form and the 
>> previous code works well for our components.
>>
>> But the HTML rendering runs in the native OS thread and so do their 
>> events. So the event needs to be processed there and can't be intercepted. 
>> The only workaround is to write JavaScript code that will disable the 
>> browser component explicitly. 
>>
>> On Tuesday, December 29, 2020 at 12:19:51 PM UTC+2 P5music wrote:
>>
>>> Please have a look to this code snippet. I added it to the CommandDialog:
>>>
>>> private void setMouseEventsListener()
>>> {
>>> actionListener=new ActionListener() {
>>> @Override
>>> public void actionPerformed(ActionEvent evt) {
>>>
>>> if (isMouseEventOutside(evt.getX(),evt.getY())) evt.consume();
>>>
>>> }
>>> };
>>> form.addPointerDraggedListener(actionListener);
>>> form.addPointerPressedListener(actionListener);
>>> form.addPointerReleasedListener(actionListener);
>>> form.addLongPressListener(actionListener);
>>>
>>> }
>>>
>>> It is not working as expected.
>>> I can report this:
>>>
>>> The layout is a table layout for a master/detail appearance.
>>> In the left part there are some buttons and a large BrowserComponent.
>>> In the right part there are some buttons and a small BrowserComponent.
>>>
>>> Let's say a CommandDialog is called from the left container from a 
>>> callback of the Javascript interface of the BrowserComponent when I long 
>>> press an iFrame element.
>>>
>>> The dialog appears.
>>> -If I click inside the dialog, the mouse event is not processed. The 
>>> dialog buttons do not work. (not OK)
>>> -If I click outside:
>>>             -if I click on the right container of the table layout 
>>> nothing happens (OK)
>>>             -if I click on the left container:
>>>                           -if I click on a button the dialog disappear 
>>> (OK but I will have to handle the behaviour according to a parameter)
>>>                           -if I click on the BrowserComponent the mouse 
>>> event reaches to it  (not OK)
>>>                                  and
>>>                                  the dialog does not disappears (OK)
>>>                                  and
>>>                                  the click is processed and the right 
>>> part changes with the detail data (not OK).
>>>
>>> What's the explanation and solution?
>>> Thanks
>>>          
>>>
>>>
>>>
>>>
>>> Il giorno martedì 29 dicembre 2020 alle 04:08:07 UTC+1 Shai Almog ha 
>>> scritto:
>>>
>>>> Hi,
>>>> these methods are methods ofcomponent not form so they're designed for 
>>>> a component to grab events in a hierarchy. It appears in form because of 
>>>> its hierarchy.
>>>> You can implement a pointer pressed/released/dragged listener and 
>>>> consume() all events that are out of bounds.
>>>>
>>>> On Monday, December 28, 2020 at 11:22:33 AM UTC+2 P5music wrote:
>>>>
>>>>> (Merry Christmas)
>>>>>
>>>>> My app now features a new dialog class, I called it CommandDialog. It 
>>>>> leverages both the features of InteractionDialog and Dialog, so the 
>>>>> show() 
>>>>> method now returns a Command.
>>>>> This class has to be completed to be fully functional:
>>>>> I subclassed InteractionDialog so now I need to prevent the mouse 
>>>>> events from hitting the underlying components in the form.
>>>>> I tried 
>>>>>     form.setGrabsPointerEvents(false);
>>>>>     form.setIgnorePointerEvents(true);
>>>>> but they seem not to be working at all. Furthermore they seem to be 
>>>>> the same instruction with negated boolean parameter.
>>>>> Moreover I need the setDisposeWhenPointerOutOfBounds(value) feature 
>>>>> that also seem not to be working.
>>>>>
>>>>> I need a workaround if necessary. I have some ideas but maybe 
>>>>> something simple is available.
>>>>>
>>>>> This applies also to the InteractionDialog itself.
>>>>>
>>>>> 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/1114d077-7f0a-43bc-a5fe-6f843c3cd095n%40googlegroups.com.

Reply via email to