[xmonad] darcs patch: Decoration: fix mouse dragging jump ...
Andrea Rossato
andrea.rossato at unibz.it
Sat Feb 9 03:38:59 EST 2008
On Fri, Feb 08, 2008 at 09:47:02PM +0100, Andrea Rossato wrote:
> Fri Feb 8 21:41:20 CET 2008 Andrea Rossato <andrea.rossato at unibz.it>
> * Decoration: fix mouse dragging jump ...
please forget this one. see below.
> + decoEventHook _ (DS dwrs@(((_,r),(dw, Just dr)):_) _) ButtonEvent { ev_window = ew
> + , ev_event_type = ty
> + , ev_x = ex }
> + | ty == buttonPress
> + , dw == ew = mouseDrag (\x y -> do
> + let rect = Rectangle (x - fi ex) (y - rect_y dr + rect_y r)
> + (rect_width r) (rect_height r)
> + sendMessage (SetGeometry rect)) (return ())
can you please check if the reasoning is fine?
1. I have 1 point (pointer even: px,py) relative to the (absolute)
decoration window's origin (dx,dy)
2. the absolute coordinates of the pointer events are:
(dx + px), (dy + py)
3. the distance of the pointer event from the decorated window's
origin (wx,wy) is:
(dx + px) - wx, (dy + py) -wy
4. when I start grabbing I get the absolute position of the pointer
(ex,ey), and so I need to subtract the above distance to set the
new decorated window's origin like this:
ex - (dx + px - wx), ey - (dy + py - wy)
This seems to be working fine (I'm going to push within a couple of
hours, but if you find a mistake please drop me a line - here or on
IRC).
Sorry for this noise but I find this a quite subtle issue if you are
not that used to this kind of stuff... high school memories here...
;)
Andrea
ps: I'm going to write a small DecorationMadness module for storing,
well... you'll see!
More information about the xmonad
mailing list