event/offset relative to screen-face ?
[1/4] from: arolls::idatam::com::au at: 23-Nov-2001 18:25
Does anyone know how to get the mouse position (or other event/offset) relative to the screen-face (that is the top-level window which represents the os desktop)? I tried modifying system/view/screen-face/feel to report event/offset, but it appears that all windows that I open still have event/offset relative to their top/left corner. Anton.
[2/4] from: james:mustard at: 23-Nov-2001 20:56
recurse-offset: func [face /local o][ ;this recursively appends offset values o: face/offset if not none? face/parent-face [o: o + recurse-offset face/parent-face] o ]
[3/4] from: arolls:idatam:au at: 26-Nov-2001 17:05
I want to get the mouse position directly, because... I'll explain. I am clicking in a window and dragging it to move it (with my own code, not using the os-supplied title bar). However the events come too fast for the refresh (perhaps the hardware face movement trick will improve that). Anyway, the event/offset is measured relative to the window, but I am moving the window, and the window hasn't finished updating since the last event, so some event/offsets are incorrect. This results in a window that reacts kind of wildly, like riding a bucking bronco. I was thinking of using a lock-out mechanism while waiting for the window to finish updating, as I used in a realtime resize program, (http://anton.idatam.com.au/rebol/util/my-request-file.r) but I haven't figured out a way yet. Anyone got any clues? That's not a bad bit of program there, though. :) Anton.
[4/4] from: max:quazart at: 26-Nov-2001 8:29
The custom window manager I built a while ago (which I sent with the timeline example a while back) handles all events and does not loose track of the pointer with regards to the window. BUT it does lag behind the mouse when moving slowly... so, My solution, is to do a to-image of the entire ui in the down event of the engage func. replace the pane of the window with one function which tracks NOTHING else than the mouse movement and when the 'up is called, just put the panes back before calling show on the window. I have not tried this, but combined with the recently discovered move optimisation... this should make the loop much quicker. HTH -MAx