compositor: Clip pointer coordinates on pointer enter as well
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 23 Oct 2012 17:04:09 +0000 (13:04 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 24 Oct 2012 13:54:42 +0000 (09:54 -0400)
When tiling window managers resize a non-resizable window they're violating
ICCCM.  Not some hippie-community standard like EWMH, but ICCCM, which is
about as old and sacred as the constitution.  If they want to force a window
to be a size it wasn't designed for, at least they could have the decency to
reparent the client window into a bigger containing window of whatever size
they think it should be.  But apparently ICCCM compliance is too much to ask.

Anyway, all that just to say that it's really not our fault when we get an
enter event with coordinates outside the valid output region.  But we'll
clip it anyway and work around mis-behaving tiling WMs.

src/compositor.c

index c3ee70f..3597cf7 100644 (file)
@@ -1756,6 +1756,7 @@ notify_pointer_focus(struct weston_seat *seat, struct weston_output *output,
        struct wl_pointer *pointer = seat->seat.pointer;
 
        if (output) {
+               clip_pointer_motion(seat, &x, &y);
                weston_seat_update_drag_surface(seat,
                                                x - pointer->x,
                                                y - pointer->y);