Wrap proxy objects in QPointers
It's possible that a canvas is being deleted while an action is
still running; accessing the proxy object in when ending the action
will cause a crash. In general, we should wrap every QObject pointer
that is held by a class that is not the parent or the owner in a
QPointer.
BUG:385166