<Swing Dev> Review request: 6852592 (revalidate() must be smarter)

Anthony Petrov Anthony.Petrov at Sun.COM
Wed Jul 15 16:17:49 UTC 2009


On 07/15/2009 07:54 PM, Alexander Potochkin wrote:
> I think checking isValidatRoot() on AWT side
> will save lots of lines of code
> 
> Here is the existing code from the Component class
> 
>             if (Component.isInstanceOf(this, "javax.swing.JComponent")) {
>                 if (((javax.swing.JComponent) this).isOpaque()) {
>                     states.add(AccessibleState.OPAQUE);
>                 }
>             }
> 
> Can we do the same for isValidatRoot()?
Yes, that is a smaller solution (in terms of the code size), though I 
prefer to minimize calling Swing stuff from AWT code. What do others think?

--
best regards,
Anthony

> 
> Thanks
> alexp
> 
>> Hello Swing and AWT teams,
>>
>> This is a fix for the problem discussed recently (see the thread 
>> "Lw/Hw mixing vs revalidate()/validate()/invalidate()"). The webrev:
>>
>> http://cr.openjdk.java.net/~anthony/7-23-invalidate-6852592.0/
>>
>> Please review.
>>
>> A couple of notes:
>>
>> 1. We need to get a CCC approval for the API specification changes. 
>> This will take some time.
>>
>> 2. The Container.invalidate() previously had a block of code that was 
>> executed w/o grabbing the TreeLock (a call to the 
>> LayoutManager2.invalidateLayout())). Now the code is moved to the 
>> invalidateImpl() which is always invoked under the TreeLock. This 
>> doesn't seem to be a problem: actually only the initial call to the 
>> Container.invalidate() ran the code off the lock. All subsequent 
>> recursive calls to this method did in fact happen under the lock. 
>> Therefore I assume that this change is OK.
>>
>> -- 
>> best regards,
>> Anthony
> 



More information about the swing-dev mailing list