# HG changeset patch # User Stefanos Apostolopoulos # Date 1382282623 -7200 # Sun Oct 20 17:23:43 2013 +0200 # Node ID 909b0d7fe4dd0af23585e750bd3396a0b53d2a6b # Parent 2f2f0b3b4702482cb47a98904fb1822080e60266 Fix bug 1300 by querying current border size in ConfigureNotify, and adjusting window coordinates accordingly. diff -r 2f2f0b3b4702 -r 909b0d7fe4dd src/video/x11/SDL_x11events.c --- a/src/video/x11/SDL_x11events.c Sat Oct 19 01:29:23 2013 -0700 +++ b/src/video/x11/SDL_x11events.c Sun Oct 20 17:23:43 2013 +0200 @@ -519,10 +519,32 @@ xevent.xconfigure.x, xevent.xconfigure.y, xevent.xconfigure.width, xevent.xconfigure.height); #endif + long border_left = 0; + long border_right = 0; + long border_top = 0; + long border_bottom = 0; + if (data->xwindow) { + Atom _net_frame_extents = XInternAtom(display, "_NET_FRAME_EXTENTS", 0); + Atom type; + int format; + unsigned long nitems, bytes_after; + unsigned char *property; + XGetWindowProperty(display, data->xwindow, + _net_frame_extents, 0, 16, 0, + XA_CARDINAL, &type, &format, + &nitems, &bytes_after, &property); + + border_left = ((long*)property)[0]; + border_right = ((long*)property)[1]; + border_top = ((long*)property)[2]; + border_bottom = ((long*)property)[3]; + } + if (xevent.xconfigure.x != data->last_xconfigure.x || xevent.xconfigure.y != data->last_xconfigure.y) { SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_MOVED, - xevent.xconfigure.x, xevent.xconfigure.y); + xevent.xconfigure.x - border_left, + xevent.xconfigure.y - border_top); } if (xevent.xconfigure.width != data->last_xconfigure.width || xevent.xconfigure.height != data->last_xconfigure.height) {