[PD-dev] improved scrolling algorithm

Ivica Ico Bukvic ico at vt.edu
Tue May 18 19:49:45 CEST 2010


On Tue, 2010-05-18 at 13:30 -0400, Ivica Ico Bukvic wrote:
> All right, the following fixes scrolling on Linux once and for all. It
> should be also wrapped in a way that does not disturb Win and OSX (even
> though they are in a need of the same fix).
> 
> Please note the following applies to:
> Linux/OSX/Windows
> Pd 0.42.5 vanilla and extended
> Tcl/Tk 8.4 & 8.5
> 
> Basically, text is incorrectly reported by bbox all call so it screws
> scrollbars up. E.g. try the attached problem_1.pd patch and you'll
> notice there are vertical scrollbars even though there shouldn't be any.
> This makes tight GUI crafting a real pain. Also, please note that on
> smaller font sizes the problem is less apparent but nonetheless still
> there.
> 
> Solution: calculating text size separately from other objects to obtain
> total box size. This, however, has to be done *per font* due to tcl/tk's
> buggy implementation.
> 
> Attached patch also reinvokes getscrollbar after cut/paste/undo/redo
> (undo/redo is patched in g_editor.c as otherwise it occurs out of sync
> before undo/redo has been processed in g_editor.c, resulting in a
> erroneous scroll position).
> 
> The current scrolling algorithm should to the best of my knowledge pass
> all the existing test Hans has listed on his gui-rewrite page with one
> notable difference:
> 
> This approach assumes that the canvas should always fit objects the best
> it can to avoid using scrollbars (unlike traditional approach that has
> an invisible center around 0 0). This does sometimes result in patch
> shifting a bit off-center (but never outside the view unless the entire
> patch is too large to fit the saved window size)--this is due to the
> fact that currently Pd has no way of telling from the saved file where
> the viewport should be. This can be easily circumvented using the cnv
> object which still yields IMHO better results than the traditional
> system.
> 
> Cheers!
> 
> Ico

Oops, forgot to include the right pd.tk patch. This one includes proper
realignment of the pop-up window (right-click), plus something I found
rather handy, the windows that pop-up always appear next to the mouse
cursor, rather than a random place on-screen.

So, attached are all the files, plus the correct pd.tk patch. Hence,
please disregard patches I sent out in my previous email.

Best wishes,

Ico

-------------- next part --------------
A non-text attachment was scrubbed...
Name: g_editor.c_scrollbar_fix_100518
Type: text/x-patch
Size: 620 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20100518/7903d182/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pd.tk_scroll_fix_100518
Type: text/x-patch
Size: 10526 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20100518/7903d182/attachment-0001.bin>
-------------- next part --------------
#N canvas 2 50 553 380 10;
#X obj 173 -31563 nbx 1 300 -1e+37 1e+37 0 0 empty empty empty 0 -8
0 300 -262144 -1 -1 0 256;


More information about the Pd-dev mailing list