Rack uses the defined position and size for hit-testing. When position and size are infinite (which they are by default), then the widget catches everything.
If a widget is only positioned and never sized, that widget eats all input to the right and below of that position, which is really weird, but a mistake I’ve made a couple of times when making custom widgets.