<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