This code suffer from a similar bug to ::queue_area on ::size_allocate. This need some revisiting to make it work properly.