Resolve "Make NautilusWindowSlot non-derivable"
This MR request has 2 purposes:
- Closing #1550.
- Cherry-picking a commit from Ernestas's early GTK4 port, because 2.1 it applies cleanly between the other 2 commits; 2.2 it removes some direct access to GdkEvent structs, preparing for GTK4.