<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 03:06:59 PST 2013
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