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

Oleg Pekhovskiy oleg.pekhovskiy at oracle.com
Wed Nov 20 06:23:42 PST 2013

Hi Sergey,

thanks you for the review,

please see the next version of fix:

getPopup() method was renamed to showPopup().


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

More information about the awt-dev mailing list