diff --git a/ChangeLog b/ChangeLog index b341f4e..8759084 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-11-04 Adrian Robert + + * Source/x11/XGServerEvent.m (-processEvent:): For XdndPosition + event (ClientMessage), convert the point from root coordinates + using XTranslateCoordinates() instead of relying on cached window + position. Update cached window position from this. + 2005-01-12 00:32 Alexander Malmberg * Source/gsc/GSStreamContext.m (-DPSsetstrokeadjust:): diff --git a/Source/x11/XGServerEvent.m b/Source/x11/XGServerEvent.m index 224dccc..ab0b3e6 100644 --- a/Source/x11/XGServerEvent.m +++ b/Source/x11/XGServerEvent.m @@ -571,9 +571,23 @@ static int check_modifier (XEvent *xEvent, KeySym key_sym, Window source; Atom action; NSDragOperation operation; + int root_x, root_y; + Window root_child; NSDebugLLog(@"NSDragging", @" XdndPosition message\n"); source = XDND_POSITION_SOURCE_WIN(&xEvent); + /* + Work around a bug/feature in WindowMaker that does not + send ConfigureNotify events for app icons. + */ + XTranslateCoordinates(dpy, xEvent.xclient.window, + RootWindow(dpy, cWin->screen), + 0, 0, + &root_x, &root_y, + &root_child); + cWin->xframe.origin.x = root_x; + cWin->xframe.origin.y = root_y; + eventLocation.x = XDND_POSITION_ROOT_X(&xEvent) - NSMinX(cWin->xframe); eventLocation.y = XDND_POSITION_ROOT_Y(&xEvent) -