<AWT Dev> [8] Review request for 7160604: Using non-opaque windows - popups are initially not painted correctly

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Wed Nov 20 06:25:18 PST 2013


Thanks!
The fix looks good.

On 20.11.2013 18:23, Oleg Pekhovskiy wrote:
> Hi Sergey,
>
> thanks you for the review,
>
> please see the next version of fix:
> http://cr.openjdk.java.net/~bagiras/7160604.2/
>
> getPopup() method was renamed to showPopup().
>
> Thanks,
> Oleg
>
>
> On 20.11.2013 15:14, Sergey Bylokhov wrote:
>> Hi, Oleg.
>> Looks like now getPopup method should be renamed, because it returns
>> nothing.
>>
>> On 20.11.2013 15:06, Oleg Pekhovskiy wrote:
>>> Hi all,
>>>
>>> please review the fix
>>> http://cr.openjdk.java.net/~bagiras/7160604.1/
>>> for
>>> https://bugs.openjdk.java.net/browse/JDK-7160604
>>>
>>> For now popup menu is painted correctly, so the fix applies to
>>> drop-down list of combo-box only.
>>> BasicComboPopup class implements drop-down list.
>>> BasicComboPopup.isVisible() checks whether BasicComboPopup.popup field
>>> is not null. When the drop-down list is about to show and the
>>> following call-chain occurs: BasicComboPopup.togglePopup() -> show()
>>> -> setVisible(true) -> getPopup()
>>> newPopup.show() method is called before BasicComboPopup.popup field is
>>> updated. Thus when painting occurs for the first time (synchronously,
>>> inside newPopup.show()), BasicComboPopup.isVisible() returns false and
>>> JComponent.paintChildren() skips drawing of BasicComboPopup.
>>> So the fix makes BasicComboPopup.popup field being updated before call
>>> of Popup.show(). Moreover setting of BasicComboPopup.popup field was
>>> moved inside BasicComboPopup.getPopup() method as the same thing
>>> happened after each call of this method.
>>>
>>> Thanks,
>>> Oleg
>>
>>


-- 
Best regards, Sergey.



More information about the awt-dev mailing list