[vid] List Query
[1/5] from: philb::upnaway::com at: 30-Dec-2003 10:06
Hi,
I have a query on how to use list.
I want to know the offset from the *window* of the mouse when I press the down button.
event/offset only gives me the offset from the text field of the list. (see code below)
Any help would be appreciated.
Cheers Phil
rebol []
data: ["AAA" "BBB" "CCC" "DDD" "EEE" "FFF" "GGG" "HHH"]
view layout [
list [
f: text 100 feel [
engage: func [face action event] [
if event/type = 'down [
print event/offset
]
]
]
]
supply [
if count > length? data [face/show?: false exit]
face/show?: true
f/text: pick data count
]
]
[2/5] from: moliad:aei:ca at: 29-Dec-2003 21:50
hi Phil
use win-offset?
it returns the offset from any given face.
-MAx
[3/5] from: moliad:aei:ca at: 29-Dec-2003 22:08
I meant to say:
it returns the offset FOR any given face (from window)
I also have checked that the win-offset? (after sourcing it and doing a test) does not
take into consideration the edges... so that if you compare the value returned by win-offset
and a place a face at that location within the root face , you will have an offset equal
to all nested faces without their edge sizes...
here is a patch which fixes this, I'm quite sure its been suggested before, but it was
so simple to do... It would have taken me more time to find it...
win-offset?: func [
{Given any face, returns its screen absolute offset.}
face [object!]
/local xy
][
xy: 0x0
while [face] [
if face/parent-face [
xy: xy + face/offset
if face/parent-face/edge [xy: xy + face/parent-face/edge/size]
]
face: face/parent-face
]
xy
]
HTH!!!
-MAx
[4/5] from: didec:tiscali at: 30-Dec-2003 17:15
Re: [vid] List Query
win-offset? and edge is on the bug list for view1.3. It is solve in development version
1.2.18.
But I wonder if it can work with iterated face (text-list is a one) ?
DideC
[5/5] from: antonr:iinet:au at: 1-Jan-2004 23:25
You could modify the list's detect function and
capture 'down events. Being the list's feel
it will be from the list's point of view.
Anton.