I'd like the request to be reopened, because the current function `window-inside-absolute-pixel-edges' does not provide the requested behaviour. Suppose no fringes, and header-line. All considerations for a GTK build. 0--------------------------------------* | display | | A----------------------------+ | | | emacs@foo.bar + | | |-B------------------------+ + | | | | toolbar | | | | | +------------------------+ | | | | | menubar | | | | | C------------------------+ | | | | | | | | | | | window | | | | | | D---------+ | | | | | | | tooltip | | | | | | | +---------+ | | | | | +------------------------+ | | | *----------------------------* | | | *--------------------------------------* We have a buffer position D = (D.x, D.y) in some window and want to display a tool-tip there. At the moment, (posn-x-y (posn-at-point)) gives us a position relative to C, so we would need it's absolute position. But `window-absolute-pixel-edges' gives the absolute position of (C.x - (B.x - A.x), C.y - (B.y - A.y)) = (A.x , C.y - (B.y - A.y)) , that is, it does not account for the width and height (B - A) of the window managers decorations. Furthermore these sizes are unknown to the lisp side, making it impossible to complete the desired task. So it seems to me that `window-absolute-pixel-edges' should return the absolute position of C, such that the tool-tip (or other frame) may be positioned at C + D. I noticed, that the frame struct already has members x_pixels_diff and y_pixels_diff, such that (x_pixels_diff, y_pixels_diff) = (B.x - A.x, B.y - A.y) , such that we may compute C with this values. So I propose extending `calc_absolute_offset' by adding these pixel_diff values. For GTK this appears to be especially easy, since these diff values already account for the tool-bar and menu-bar sizes.