On 11/29/2016 6:24 PM, Sergey Bylokhov wrote:
On 29.11.16 17:35, Semyon Sadetsky wrote:
Paint event may be missed by the JLightweightFrame on Windows platform
when it is resized consequently to the same size because the latter sets
paintPainding flag .
From what place the Paint will be posted after the call to
setBounds()? In case of normal native components this event will be
posted from native code after the size of the native component will be
changed. But how it works in case of JLightweightFrame? At least
COMPONENT_MOVED/COMPONENT_RESIZED are posted manually from the
reshape() method, probably we should do the same for the PAIN event as
well? In this case our optimization which coalesce PAINT events will
work and the sequence of setBounds() will produce only one repaint()
action.
Paint event is posted on resize and handled as usual in case of
JLightweightFrame, but the paint handler does not initiate the real
paint when paintPainding is true for optimization purpose because it
detects that the consequent paint event has been posted already.
The fix overrides WComponentPeer#setBounds() method in
WLightweightFramePeer to clears paintPainding flag.