[ 
https://issues.apache.org/jira/browse/WICKET-3166?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12931954#action_12931954
 ] 

Hudson commented on WICKET-3166:
--------------------------------

Integrated in Apache Wicket 1.4.x #267 (See 
[https://hudson.apache.org/hudson/job/Apache%20Wicket%201.4.x/267/])
    meh. this caching will probably slow things down. and it can be difficult 
to find all the places in code where caching should be invalidated. lets hold 
off until it is a hotspot.
Issue: WICKET-3166
caching for isVisibleInHieararchy()
Issue: WICKET-3166


> isVisibleInHierarchy() possibly unnecessarily checks children whose parents 
> are invisible?
> ------------------------------------------------------------------------------------------
>
>                 Key: WICKET-3166
>                 URL: https://issues.apache.org/jira/browse/WICKET-3166
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.4.13
>            Reporter: Martin Makundi
>            Assignee: Igor Vaynberg
>             Fix For: 1.4.14, 1.5-M4
>
>         Attachments: diff.txt, Wicket-Quickstart.zip
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> Hi!
> See attached quickstart with junit test reproducing the bug. See also patch 
> proposal.
> I have a page with two panels:
> page.form.add(panel1);
> page.form.add(panel2);
> in some situations panel1 is not visible.
> However, a form submit event will visit all formcomponents of panel1 via:
>        at 
> org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrder(FormComponent.java:400)
>        at 
> org.apache.wicket.markup.html.form.Form.visitFormComponentsPostOrder(Form.java:1209)
>        at org.apache.wicket.markup.html.form.Form.inputChanged(Form.java:1403)
>        at 
> org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:865)
> This results in a crash because panel1 components are not prepared to
> be invoked via isvisible when the panel itself is not visible.
> I wonder if the component.isVisibleInHierarchy could be changed as
> follows, to first check parent visibility:
>  public final boolean isVisibleInHierarchy()
>  {
>    Component component = this;
>    while (component != null)
>    {
>      Component componentParent = component.getParent();
>      if (((componentParent == null) ||
> componentParent.isVisibleInHierarchy()) &&
> component.determineVisibility())
>      {
>        component = componentParent;
>      }
>      else
>      {
>        return false;
>      }
>    }
>    return true;
>  }
> Similar change could/should maybe be possible also for isEnabledInHierarchy ?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to