Ticket UUID: | 45668dbdf0a50fd901270781643f771c23811dd7 | |||
Title: | ScrollableFrame fails with too many widgets | |||
Type: | Bug | Version: | 1.9.10 | |
Submitter: | anonymous | Created on: | 2017-10-22 09:22:24 | |
Subsystem: | bwidget | Assigned To: | nobody | |
Priority: | 5 Medium | Severity: | Minor | |
Status: | Open | Last Modified: | 2017-10-31 01:14:45 | |
Resolution: | None | Closed By: | nobody | |
Closed on: | ||||
Description: |
(text/x-fossil-wiki)
If a ScrollableFrame contains too many widgets, it does not display / scroll them correctly anymore. Either the frame does not scroll below a certain point (even if there would be more widgets), or - sometimes - widgets that should be placed towards the bottom of the frame, show up at the top. This script demonstrates the issue: <verbatim> #!/usr/bin/env tclsh package require Tk 8.6 package require BWidget 1.9.7 set widgetCount 200 set widgetHeight 20 # UI # ScrollableFrame .sf grid .sf -column 0 -row 0 -sticky nsew grid columnconfigure . 0 -weight 1 # Scroll bindings # bind . <Button-4> [list .sf yview scroll -1 unit] bind . <Button-5> [list .sf yview scroll 1 unit] bind . <u> [list .sf yview scroll -1 unit] bind . <d> [list .sf yview scroll 1 unit] grid rowconfigure . 0 -weight 1 # Create widgets # for {set i 1} {$i <= $widgetCount} {incr i} { grid [label [.sf getframe].$i -text $i -height $widgetHeight] } </verbatim> (run and try to scroll to label #200) Notes: * If the problem does not reproduce, try increasing the 'widgetHeight' and / or 'widgetCount' vars. * The key factor seems to be the total height of widgets in the frame and not their number. i.e. the same effect could be reproduced with less widgets, if they are higher. | |||
User Comments: |
kjnash added on 2017-10-31 01:14:45:
I've run into this limit too, at around 32k pixels. I believe it is a limitation of Tk, and is beyond the scope of BWidget. I reported it on the Tk bug tracker. http://core.tcl.tk/tk/tktview/2891877fffffffffffff anonymous (claiming to be Simon Bachmann) added on 2017-10-23 20:37:59: I kinda suspected it's some internal limitation. The limit seems to be more like 33600 points (approx). BTW: [winfo] returns the correct size even for values far above 65536, but after about 33600 I cannot scroll all the way down anymore. oehhar added on 2017-10-23 15:51:57: (text/x-fossil-wiki) Hi Simon, thank you for the report. I suppose, you hit an internal limitation of the used canvas widget, which can not exceed 65536*65536 (when I remember right) points. What does <verbatim> % winfo height [.sf getframe] 61200 </verbatim> return for you ? If this is larger, it does not work, right ? So, I am sorry, I suppose, this is not fixable. There are some widgets which do not use a canvas as scrolling base which allow larger scrolling regions. Others may comment to. Thank you, Harald |