Hello, Anthony.

> The fix looks good to me. BTW, could we provide some meaningful message with 
> the InvalidDnDOperationException ? E.g. state that it's unsupported for this 
> window or something like this? Also, the comments "// Unsupported" after the 
> if()return; could be better worded as "Unsupported for a window w/o a native 
> view (plugin)".
I've updated the fix. The new version is available here:
http://cr.openjdk.java.net/~pchelko/8020371/webrev.02/

With best regards. Petr.

On Jul 11, 2013, at 6:11 PM, Anthony Petrov wrote:

> Hi Petr,
> 
> The fix looks good to me. BTW, could we provide some meaningful message with 
> the InvalidDnDOperationException ? E.g. state that it's unsupported for this 
> window or something like this? Also, the comments "// Unsupported" after the 
> if()return; could be better worded as "Unsupported for a window w/o a native 
> view (plugin)".
> 
> --
> best regards,
> Anthony
> 
> On 07/11/13 17:50, Petr Pchelko wrote:
>> Hello, Artem.
>> 
>> I've updated the fix, the new version is here:
>> http://cr.openjdk.java.net/~pchelko/8020371/webrev.01/
>> 
>>> 1. Are CDropTarget and CDragSourceContextPeer ready to handle the case, 
>>> when their nativePtr is 0?
>>      1. CDropTarget: it's absolutely ready, it has only create and release 
>> methods which are ready to have a nativePtr=0.
>>      In native we create a delegate and set it as the DropTarget to the 
>> View. This DropTarget get's notified when NSView see some DnD operation.
>>      So we cannot and should not set it for applets.
>> 
>>      2. CDragSourceContextPeer - it has only one public method: startDrag 
>> which could be called when a DragGestureRecognizer recognizes the Drag. In 
>> applets it could never happen,
>>      so the CDragSourceContextPeer wouldn't event be created. I'be updated 
>> it just to make sure we would never get a native crash with 0 viewPtr.
>> 
>>> 2. Lines 110-113 in CDragSourceContextPeer should be better moved to before 
>>> line 140.
>>      I've updated the fix.
>> 
>>> 3. It's unclear if CDropTarget and CDragSourceContextPeer should be used 
>>> for lightweight components at all. How lightweight components are handled 
>>> on other platforms.?
>> Not sure about other platforms, but on Mac it works as follows:
>>      When a DropTarget is set to a lightweight component we set to it's peer 
>> and traverse the tree up until we get a non-lightweight peer. And create, 
>> update (or don't update) the
>>      CDropTarget for that peer. The CDragSourceContextPeer is a singleton. 
>> When DnD is started we update the trigger in it. The trigger could be any 
>> component. To get native support
>>      we traverse up the tree from the trigger t get a first heavyweight 
>> component and use it as a native peer for DnD.
>> 
>> I\m not sure I've answered your question thought.
>>      
>> With best regards. Petr.
>> 
>> On Jul 11, 2013, at 4:15 PM, Artem Ananiev wrote:
>> 
>>> Hi, Petr,
>>> 
>>> I'm not an expert in this code, so a few questions about the fix:
>>> 
>>> 1. Are CDropTarget and CDragSourceContextPeer ready to handle the case, 
>>> when their nativePtr is 0?
>>> 
>>> 2. Lines 110-113 in CDragSourceContextPeer should be better moved to before 
>>> line 140.
>>> 
>>> 3. It's unclear if CDropTarget and CDragSourceContextPeer should be used 
>>> for lightweight components at all. How lightweight components are handled 
>>> on other platforms.?
>>> 
>>> Thanks,
>>> 
>>> Artem
>>> 
>>> On 7/11/2013 1:51 PM, Petr Pchelko wrote:
>>>> Hello, AWT Team.
>>>> 
>>>> Please review the fix for the issue:
>>>> http://bugs.sun.com/view_bug.do?bug_id=8020371
>>>> (It's recently created, so it might not be visible on bugs.sum.com yet)
>>>> The fix is available at:
>>>> http://cr.openjdk.java.net/~pchelko/8020371/webrev/
>>>> 
>>>> The problem:
>>>> We currently do not support DnD in applets on Mac, so 
>>>> IllegalArgumentException was thrown. If you explicitly call 
>>>> component.setDropTarget(new DropTarget()) the applet would fail to start 
>>>> due to this exception.
>>>> 
>>>> The solution:
>>>> The fix removes the exception and silently ignores unsupported DnD 
>>>> initialization.
>>>> DnD does not start to work, however at least an applet could be started.
>>>> However, I'm not sure if we should print a warning about unsupported DnD. 
>>>> What do you think?
>>>> 
>>>> With best regards. Petr.
>>>> 
>> 

Reply via email to