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 Attachments: Wicket-Quickstart.zip 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.