My widget system is rapidly changing as I'm developing it.
As evidence of this, consider that I originally had just one hover/active object per WidgetManager.
Now, I've changed it so that WidgetManager doesn't keep track of one hover/active object, but another class called Pointer does. WidgetManager has a variable number of Pointer instances (typically one). This Pointer represents some abstract input device that has the capability to independently hover or activate Widgets. For example, a mouse pointer. Or a finger touch input. But there might be two finger touches, both of which can be hovering over various widgets. Or a finger plus the mouse pointer.
This redesign allows multiple widgets to be interacted with simultaneously, which is something I wanted to be possible.