an older fix by me (works in 1.0 too).
extract the style somehow from the demo ;-)

Volker

[REBOL [
    Title: "Korrigiert Text-list, Demo" 
    Date: 27-Jan-2001/23:39:17+1:00 
    Name: "text-list'" 
    Version: 0.9 
    File: %textlist-patch1.r 
    Home: http://jove.prohosting.com/~screbol/ 
    Author: "volker" 
    Owner: "volker" 
    Rights: "gpl" 
    Needs: [view 0.10.38] 
    Tabs: none 
    Usage: none 
    Purpose: none 
    Comment: none 
    History: [27-Jan-2000 ""] 
    Language: "german"
] 
patched: context [
    l: last-shown-lines: styles: text-list': update-slider: 
    none 
    [
    ] 
    [
        %tlp2.r
    ] 
    styles: stylize [
        text-list': text-list with [
            "add size-change scrolling" 
            last-shown-lines: -1 
            update-slider: does [
                either 0 = length? data [sld/redrag 1] [
                    sld/redrag lc / length? data]
            ] 
            append init [
                sub-area/feel/redraw: does [
                    l: length? data 
                    if l <> last-shown-lines [
                        last-shown-lines: l 
                        update-slider
                    ]
                ]
            ] 
            "leere liste erlauben." 
            words/data: 
            func [new args] [
                if not empty? second args [
                    new/text: first new/texts: second args
                ] 
                next args
            ]
        ]
    ]] 
test: 
func [
    /local fix-slider lo my-styles tl1 tl2 tl3
] [
    [
        %tlp.r
    ] 
    fix-slider: func [faces [object! block!]] [
        foreach list to-block faces [
            either 0 = length? list/data [list/sld/redrag 1] [
                list/sld/redrag list/lc / length? list/data]
        ]
    ] 
    my-styles: patched/styles 
    lo: layout [backdrop gold / 2 
        styles my-styles 
        text 600 wrap { die text-list hat zwei fehler: 
  bei datena&nderungen wird der scrollbereich nicht vera&ndert
  und leere listen funktionieren nicht.
  hier ist eine Korrektur} 
        guide 
        text "original-textlist" 
        tl1: text-list data [1 2 3 4 5] 
        button "add" [append tl1/lines [7 8 9 0] 
            show tl1] 
        return 
        text "textlist mit workaround" 
        tl2: text-list data [1 2 3 4 5] 
        button "add" [append tl2/lines [7 8 9 0] 
            fix-slider tl2 show tl2] 
        return 
        text "text-list', korrigiert" 
        tl3: text-list' data [1 2 3 4 5] 
        button "add" [append tl3/lines [7 8 9 0] 
            show tl3]
    ] 
    view lo] 
test
]

>From: "P-O Yliniemi"
>> Here is a collection of text-list related problems I have gotten so
>> far:
>>
>> 1. how do I set the slider to the 'correct' position on a rebuild ?
>
>Sterling's /View beta fix was:
>
>fix-slider: func [faces [object! block!]] [
>    foreach list to-block faces [
>        either 0 = length? list/data [
>            list/sld/redrag 1
>        ][
>            list/sld/redrag list/lc / length? list/data
>        ]
>    ]
>]
>
>As was addressed two emails ago, I modified his for reasons that I 
don't
>precisely recall, but if his doesn't work at some point, try:
>
>; modification based on original by Sterling
>; updates the bar on the side of a text-list or group of text-lists
>fix-slider: func [faces [object! block!]] [
>    foreach list to-block faces [
>        either 0 = length? list/lines [
>            list/sld/redrag 1
>        ][
>            list/sld/redrag list/lc / length? list/lines
>        ]
>    ]
>]
>
>These are used as such:
>view layout [
>    tl: text-list 100x50 "a" "b" "c" [
>        tl/lines: ["new" "values" "for" "you"]
>        fix-slider tl
>        show tl
>    ]
>]
>
>I don't recall the answer to #2 and I don't recall ever knowing how to 
do
>#3, but I suspect it will require a custom face based on list, instead 
of
>text-list.
>
>Hope others know the answers.
>--Scott Jones
>
>> 2. is there a way to disable multi-selection of items in the list ?
>> 3. how do I get rid of the white area below the last entry ?
>>
>> see the example for solutions on how to keep the previous
>> item selection, and to have the same visible items in the list after
>> the rebuild.
>>
>> -------------
>> [
>> REBOL []
>>
>> list-items: {some items to play around with in the list. Specific 
problems
>I
>>              have is all related to rebuilding the list}
>>
>> list-block: parse list-items " "
>>
>> build-layout: func [
>>   {Build the test layout}
>> ][
>>   l: layout [
>>     tl: text-list 100x140 data list-block [
>>       if not none? tl/picked [ print first tl/picked ]
>>     ]
>>     button "Rebuild" [
>>       old-picked: tl/picked           ; save old selection
>>       old-sn: tl/sn                   ; save old visible area
>>       build-layout                    ; rebuild
>>       tl/picked: old-picked           ; initial selection is what 
was
>before
>>       tl/sn: old-sn                   ; make what was visible before
>visible again
>> ; how do I set the slider to the same position as before, or to 
match the
>tl/sn value ?
>>       view center-face l              ; view the layout
>>     ]
>>   ]
>> ]
>>
>> build-layout
>> view center-face l
>> ]
>>
>> /PeO
>> --
>> To unsubscribe from this list, please send an email to
>> [EMAIL PROTECTED] with "unsubscribe" in the
>> subject, without the quotes.
>>
>
>-- 
>To unsubscribe from this list, please send an email to
>[EMAIL PROTECTED] with "unsubscribe" in the 
>subject, without the quotes.
>
-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to