wicket-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Makundi <martin.maku...@koodaripalvelut.com>
Subject isVisibleInHierarchy() possibly unnecessarily checks children whose parents are invisible?
Date Fri, 12 Nov 2010 18:10:20 GMT
Hi!

I have a page with two panels:

page.add(panel1);
page.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 ?

Comments?

**
Martin

Mime
View raw message