This is basically a copy of the implementation currently residing in src/core/delete.c, which will be eventually deleted in favor of this one. https://bugzilla.gnome.org/show_bug.cgi?id=711619