Skip to content

Fix drag surfaces ignoring size updates on Wayland and X11

Ivan Molodetskikh requested to merge YaLTeR/gtk:dragsurface-resize into main

GdkDragSurface-backed widgets are not parented to an existing widget, unlike popovers, and like toplevels. This means that there's nobody to actively call gdk_drag_surface_present() to update the size, and GdkDragSurface should do it on its own, just like GdkToplevel.

In this MR I added a compute-size signal which is emitted from Wayland's GdkSurface::compute_size vfunc, similarly to how GdkToplevel works. This makes drag surfaces that change size work, notably this fixes libadwaita's tabs.

Screencast_from_2023-03-05_10-10-57

I'm not sure whether this is the right approach, and I've also no idea about any other backends, but on Wayland it seems to work and not break anything from my limited testing.

cc @otte, @exalm

Merge request reports