<Swing Dev> Unexpected NullPointerException by endComposition()
Pavel Porvatov
pavel.porvatov at oracle.com
Tue Oct 11 09:50:44 UTC 2011
Hi Charles,
> On 10/08/2011 05:41 PM, Pavel Porvatov wrote:
>> Hi Charles,
>>> On 10/07/2011 05:11 PM, Pavel Porvatov wrote:
>>>> Hi Charles,
>>>>> On 10/03/2011 05:40 PM, Pavel Porvatov wrote:
>>>>>> Hi Charles,
>>>>>>> On 09/22/2011 05:18 PM, Neil Richards wrote:
>>>>>>>> On Thu, 2011-09-22 at 14:21 +0800, Charles Lee wrote:
>>>>>>>>> Hi guys,
>>>>>>>>>
>>>>>>>>> The webrev is attached.
>>>>>>>> For ease of review, I've uploaded the webrev to
>>>>>>>> cr.openjdk.java.net [1]
>>>>>>>>
>>>>>>>> Regards, Neil
>>>>>>>>
>>>>>>>> [1] http://cr.openjdk.java.net/~ngmr/6938583/webrev.00
>>>>>>>>
>>>>>>> Hi guys,
>>>>>>>
>>>>>>> Any update about this issue? Is the idea workable?
>>>>>>>
>>>>>> Can you explain why should we consume right clicks but not left
>>>>>> ones? (May be there are other test cases when NPE is thrown... )
>>>>>> And why do you consume event? (May be it hides NPE but breaks
>>>>>> functionality)
>>>>>>
>>>>>> Thanks, Pavel
>>>>>>
>>>>>
>>>>> 1. When right clicks, it suppose to show a manu on where you
>>>>> click. But I guess the demo (CodePointIM) is not suppose to show
>>>>> that (what will be show when use CodePointIM and right click?
>>>>> IIRC, I tried the normal input and right click but get nothing)
>>>>> 2. If point 1 is true, consuming the right click in the
>>>>> CodePointIM is the easiest way to fix it and less error-prone
>>>>> comparing with fixing in the jdk...
>>>>> 3. Consuming left click will disable the movement of the input
>>>>> place by clicking, I guess...
>>>>>
>>>> There is no information about popup menu in the bug description.
>>>> The problem is that endComposition() throws NPE if Input Method is
>>>> turned on and the program is in composition mode. If you apply your
>>>> fix and change BUTTON3 into BUTTON2 in the MouseEventTest2 test
>>>> (see bug description), then NPE will be thrown with your patch as
>>>> well...
>>>>
>>>> Regards, Pavel
>>>
>>> Why change Button3 to Button2? Does Button3 reflect the right click?
>> No, Button2 is the middle button. But if you use Button2 in the
>> MouseEventTest2 the test is still valid and it shouldn't throw any
>> unexpected exceptions. But if you apply your fix and replace Button3
>> by Button2 in the MouseEventTest2 test, run the MouseEventTest2 test
>> and use testcase from the bug description (of course in step 5 you
>> should use the middle mouse button now) you'll get NPE
>>>
>>> NPE was occurred because the component is null. Component becomes
>>> null because the default carret, IIRC, has been changed when it
>>> receive the right click event. It is the right behavior, if I
>>> understand correctly. So I am trying to disable the right click
>>> event if the demo does not suppose some menu should going to show up.
>>>
>> I still don't understand where do you see popup menu? I wrote about
>> the test from
>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6938583 and there
>> is no popup there...
>>
>> Regards, Pavel
> I got your point. What about this solution:
> If in the compose mode, endCompositoin just sendComposedText instead
> of sendCommittedText.
>
> The patch is attached
>
Could you please explain the fix? May be it removes NPE but it puzzles
me. So if buffer.length() == 0 you invoke sendCommittedText, right? But
sendCommittedText commits buffer, but buffer is empty. Looks strange...
BTW: the code like "if (!notInCompositionMode) {" a little bit difficult
to understand =) I'd preffer to avoid two negations and use "if
(notInCompositionMode)" and swap if/else blocks...
Regards, Pavel
More information about the swing-dev
mailing list