[
https://issues.apache.org/jira/browse/WICKET-3166?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12932831#action_12932831
]
Martin Makundi commented on WICKET-3166:
----------------------------------------
The original isvisibleinhierarcy was breaking our production application
(attached test case).
The slightly improved isvisibleinhierarcy first checks parent visibility, this
is ok and works currently ok in our experience (is applied to our production
environment since monday; no errors).
> 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, test-WICKET-3166.patch, 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.