Search code examples
rebolrebol3r3-gui

What is causing a "word not bound to context" error in this script?


I have the following R3-GUI script:

Rebol [
    file: %context.reb
]

either exists? %r3-gui.r3 [do %r3-gui.r3][load-gui]

view [
    title "First Window"
    hgroup [
        lab: label "fld 1 "
        fld1: field "Field Data 1"
    ]
    button "Display fld 1" on-action [if error? try [probe get-face fld1][alert "Can't read fld1"]]
    button "Display fld 2" on-action [if error? try [probe get-face fld2][alert "Can't read fld2"]]
    button "Open 2nd Window" on-action [
        view [
            title "Second Window"
            hgroup [
                label "fld 2" fld2: field "field 2 data"
            ]
            button "Display fld1" on-action [if error? err: try [probe get-face fld1][probe err alert "Can't read fld1"]]
            button "Display fld2" on-action [if error? err: try [probe get-face fld2][probe err alert "Can't read fld2" ]]
        ]
    ]
]

When I click on the "Display fld2" button in the 2nd window to access the contents of fld2, I am getting a ** Script error: fld2 word is not bound to a context error. What is the cause of this? And how do I access the fld2 word inside the second window?


Solution

  • The problem is arising because the anonymous function that is being created by the parse-layout function should be a closure, and it isn't. See the diff at https://gist.github.com/earl/a009454787d9fe4cfaca which fixes the problem.