Uploaded image for project: 'ZK'
  1. ZK
  2. ZK-4720

show a hidden panel causes Uncaught RangeError: Maximum call stack size exceeded

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • 9.5.1
    • 7.0.5, 8.6.1, 8.6.4.1, 9.5.0.1
    • Components
    • Security Level: Jimmy
    • ZK 9.5.1 S1

      Steps to Reproduce

      1. run the zul

      <zk>
          <label value="ZK 8 will fail if you scroll 2 scrollbars from the top and hide than show Panel. ZK 9 will work"/>
          <checkbox label="Check to hide" checked="true" onCheck="div.visible=!div.visible" />
          <panel id="div" hflex="1" vflex="1" visible="true">
                <panelchildren>
                    <hlayout vflex="1">
                        <div hflex="1" vflex="1" style="overflow-x:hidden;overflow-y:auto;">
                            <div height="1200px"></div>   
                        </div>
                        <div hflex="1" vflex="1" style="overflow-x:hidden;overflow-y:auto;">
                            <div height="1200px"></div>                                     
                        </div>
                        <div hflex="1" vflex="1" style="overflow-x:hidden;overflow-y:auto;" >
                             <div height="1200px"></div>      
                        </div>
                    </hlayout>	
                </panelchildren>
            </panel>
      </zk>
      

      For 9.5.0.1, the same code with <custom-attributes org.zkoss.zul.css.flex="false"/>
      2. move the scrollbar of the 1st and 2nd div to the middle
      3. click the checkbox to hide and show the panel

      Current Result

      zk.wpd:26179 Uncaught RangeError: Maximum call stack size exceeded
      at zk (zk.wpd:10004)
      at init.isWatchable_ (zk.wpd:22791)
      at _visible (zk.wpd:15137)
      at _visiChildSubset (zk.wpd:15159)
      at _fire (zk.wpd:15240)
      at Object.fireDown (zk.wpd:15470)
      at Object.fireDown (zk.wpd:17254)
      at Object.fireSized (zk.wpd:18061)
      at init.beforeChildrenFlex_ (zul.box.wpd:394)
      at Object.fixFlex (zk.wpd:27752)

      Expected Result

      show the panel without the error

      Debug Info

      • 9.0.0. or above doesn't have this bug by default unless CSS flex is turned off.
      • 6.5.8.1 is unaffected.

      Workaround

            <panel id="div"  vflex="1" width="100%" visible="true">
                <panelchildren>
                    <hlayout vflex="1" width="100%">
                        <div hflex="1" height="100%" style="overflow-x:hidden;overflow-y:auto;">
                            <div height="1200px"></div>   
                        </div>
                        <div hflex="1" height="100%" style="overflow-x:hidden;overflow-y:auto;">
                            <div height="1200px"></div>                                     
                        </div>
                        <div hflex="1" height="100%" style="overflow-x:hidden;overflow-y:auto;" >
                             <div height="1200px"></div>      
                        </div>
                    </hlayout>	
                </panelchildren>
            </panel>
        <style>
          .z-hlayout-inner{
              height: 100%;
          }
        </style>
      

            rudyhuang rudyhuang
            hawk hawk
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Estimated:
                Original Estimate - 1 day
                1d
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 4 hours Time Not Required
                4h