REBOL [
    Title: "Win-offset?"
    Date: 20-May-2003
    Version: 0.0.1
    File: %win-offset.r
    Author: "Romano Paolo Tenca"
    Purpose: {Patch for win-offset? and screen-offset?. Standard functions don't add edge sizes}
    Email: rotenca@libero.it
    Web: http://www.rebol.it/~romano
    Category: [3 vid view]
]
win-offset?: func [
    {Given any face, returns its window offset. Patched by Ana}
    face [object!]
    /window-edge
    /local xy
][
    xy: 0x0
    if face/parent-face [
        xy: face/offset
        while [face: face/parent-face][
            either face/parent-face [
                xy: xy + face/offset + either face/edge [face/edge/size][0]
            ][
                if window-edge [xy: xy + either face/edge [face/edge/size][0]]
            ]
        ]
    ]
    xy
]
screen-offset?: func [
    {Given any face, returns its screen absolute offset. Patched by Ana}
    face [object!]
    /local xy
][
    xy: face/offset
    while [face: face/parent-face][
        xy: xy + face/offset + either face/edge [face/edge/size][0]
    ]
    xy
]