Handle widgets changing below mouse pointer
Whenever the widgetry below the mouse pointer changes, the widgets need to receive events to make them aware of the mouse pointer relative to them.
Here's the IRC discussion leading to filing of this issue:
Companywhenever any widget changes position or size
Companywe need to fake a motion event
Companydoes that seem about right?
Companyor a widget is added or removed - but i think that causes a resize
garnachosounds about right, crossing events due to hierarchy changes are also a possibility
garnachothose cases usually have deviceid==sourceid in x11, and gtk went along with it
garnacho(as in, not originated from a hw device)
Companyi thought fake motion event, because that will take care of everything
Companythe one tricky thing is how well we need to track if we need to fake a motion event - after all, widget-factory would potentially generate one every frame, but the only thing moving is the pulsing progressbar
garnachoI guess that should just be strictly needed if some widget in the chain actually got a different allocation
Companythat was my initial thought, but that's wrong
Companybecause a different widget might move on top of the hovered widget
Companyand also, the hovered widget might move (or be moved due to a parent moving), so it might need a motion event, even though the hovered widget itself didn't change
Companyand what makes this worst is that pick() doesn't tell us the coordinate inside the widget that we picked
Companyso we can't compare if the coordinate actually changed
garnachoI think gtk_pointer_focus_repick_target() should already take care of that, it keeps toplevel coords around. A super generic check might be "any widget that changed allocation happens to contain that point"
garnachohmm, or does it
garnachoright, not enough
Companydo we have an issue about that problem?
garnachoI don't think we do
Companyi'll file one