gtk: Rework pointer cursor selection
Check the grab widget (both explicit and implicit) and check for a cursor from the target widget up to this grab widget. If the target widget is outside the grab widget, only the grab wigdet's cursor will be checked. This also means that we have to ensure the cursor is updated on button releases, as an implicit grab being deactivated must trigger a cursor lookup from the target widget.
Showing with 48 additions and 8 deletions