From: Axel S. <A....@ke...> - 2006-09-28 09:16:37
|
Maur=C3=ADcio, On Wed, 2006-09-27 at 10:34 -0300, Maur=C3=ADcio wrote: > Hi, >=20 > How do I get the mouse position? I've been trying=20 > drawWindowGetPointer, but it always return Nothing. I want to check the=20 > mouse position when a timeout callback function is called, is that the=20 > proper way to do that? When I get the mouse position in that same window=20 > from a mouse move event I have no problems. This seems to be my fault. I tried to be too clever. The drawWindowGetPointer returns Nothing if, according to the C documentation "the window over which the pointer resides is not known to Gdk". Still, there are valid coordinates you could return instead of Nothing. So I'll fix this in future versions. I tried to investigate alternatives by adding the following lines to=20 demo/buttonbox before the call to mainGUI: dWin <- widgetGetDrawWindow window (flip timeoutAdd) 1000 $ do mPos <- drawWindowGetPointer dWin print (fmap (\(w,x,y,_) -> (w,x,y)) mPos) pos <- widgetGetPointer window print pos return True So the 'drawWindowGetPointer' call only works occasionally, for instance, in the example it only works on the buttons, but not on the surrounding window. You could try the 'widgetGetPointer' function which gives you the coordinates relative to the specify widget, which seems to do what you want, except when you pass in some container (NoWindow) widgets. Hope this helps, Axel. |