Finally able to reproduce the problem of ghost dialogs that stick around after being closed, with the add a custom new source dialog. Workaround of calling deleteLater() seems to do the trick.