Request for review: 7130587 - [macosx] Scrolling and painting issues with late invocation of setText
Sergey Bylokhov
sergey.bylokhov at oracle.com
Wed Jan 25 04:55:47 PST 2012
25.01.2012 16:44, Anthony Petrov wrote:
> Hi Sergey,
>
> I'd like to clarify the logic behind invalidating/validating parts of
> component hierarchies.
>
> src/macosx/classes/sun/lwawt/LWTextComponentPeer.java
>> 177 protected final void revalidate() {
>> 178 synchronized (getDelegateLock()) {
>> 179 getTextComponent().invalidate();
>> 180 getDelegate().validate();
>> 181 }
>> 182 }
>
> Here we're actually dealing with two different, unrelated component
> hierarchies:
>
> 1. The real, user's hierarchy: the text component belongs to it. We're
> calling invalidate() for this real, AWT component which results in
> invalidating the component and its ancestors. Do I understand
> correctly that user's code is responsible for validating their
> components back after each setText()/insert()/etc calls? Is this how a
> HW AWT hierarchy behaves (e.g. on Win and X11)?
No, we invalidate internal delegate(JScrollPane) starting from its child
TextComponent(JTextArea).
>
> 2. Our internal, not visible to the user hierarchy: the delegate Swing
> component belongs to this hierarchy. We're only calling validate() for
> it assuming that it's been invalidated somewhere else already. Is this
> correct?
> Before we did invalidate it explicitly with a call to
> getDelegate().invalidate() in sendTextEvent().
For textfield nothing changed because getTextComponent() returns
delegate. For textarea we start invalidating from the child(JTextArea)
of our delegate(JScrollPane)
> Would it make sense to add a call to getDelegate().invalidate() before
> calling its validate() in LWTextComponentPeer.revalidate() to make
> sure the validate() isn't a no-op?
>
> --
> best regards,
> Anthony
>
> On 1/25/2012 4:18 PM, Sergey Bylokhov wrote:
>> Hi Everyone,
>> We should invalidate text component, when its state changed and then
>> we should validate its container.
>>
>> Bug: http://monaco.sfbay.sun.com/detail.jsf?cr=7130587
>> Webrev can be found
>> at:http://cr.openjdk.java.net/~serb/7130587/webrev.00/
>>
--
Best regards, Sergey.
More information about the macosx-port-dev
mailing list