You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Makundi (JIRA)" <ji...@apache.org> on 2010/11/13 13:10:16 UTC
[jira] Updated: (WICKET-3166) isVisibleInHierarchy() possibly
unnecessarily checks children whose parents are invisible?
[ https://issues.apache.org/jira/browse/WICKET-3166?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Makundi updated WICKET-3166:
-----------------------------------
Attachment: Wicket-Quickstart.zip
junit test case to Reproduce the issue.
> 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
>
> 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.