x11: Make gdk_surface_get_position() return relative position

The returned position should be relative to the parent surface, but
GdkSurface::x,y were only managed properly for O-R windows. This makes
it correct for regular windows too.
This commit is contained in:
Jonas Ådahl 2020-02-16 00:28:01 +01:00
parent 2bb0eddfb5
commit 40693412d3

View File

@ -994,11 +994,21 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
}
if (!is_substructure)
{
if (surface->x != event->configure.x ||
surface->y != event->configure.y)
int new_abs_x, new_abs_y;
new_abs_x = event->configure.x;
new_abs_y = event->configure.y;
surface_impl->abs_x = new_abs_x;
surface_impl->abs_y = new_abs_y;
if (surface->parent)
{
surface->x = event->configure.x;
surface->y = event->configure.y;
GdkX11Surface *parent_impl =
GDK_X11_SURFACE (surface->parent);
surface->x = new_abs_x - parent_impl->abs_x;
surface->y = new_abs_y - parent_impl->abs_y;
}
if (surface_impl->unscaled_width != xevent->xconfigure.width ||