Skip to content
  • Olivier Fourdan's avatar
    gdkwindow: subsurface in gdk_window_get_effective_parent() · e5b63759
    Olivier Fourdan authored
    When the GtkWidget hierarchy does not match the GdkWindow hierarchy, the
    GtkWidget code may find a common ancestor that cannot be found while
    traversing the GdkWindow tree using gdk_window_get_effective_parent().
    
    This happens with for example on Wayland, a GtkPopover has another
    GtkPopover as parent, in this case, the GdkWindow parent is the root
    window, whereas the GtkWidget parent is the other GtkPopover.
    
    That confuses the gtk_widget_translate_coordinates() logic which will
    bail out in this case and won't return the translated coordinates.
    
    Make gdk_window_get_effective_parent() aware of subsurfaces and use the
    transient_for which represents the actual parent (whereas the parent
    might be pointing to the root window).
    
    Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=774148
    e5b63759