- closest = closest_widget on_canvas, xy
- if closest?
- hover = closest[1]
- else
- hover = null
- for w in on_canvas
- if w is hover
- w.set_style STYLE_HOVER
- else
- w.set_style STYLE_NORMAL
+ hover = closest_widget on_canvas, xy
+ unless hover?
+ hover = closest_widget supply, xy
+ if hover != prev_hover
+ prev_hover = hover
+ for w in selected
+ if w.style is STYLE_HOVER and w isnt hover
+ w.set_style STYLE_SELECTED
+ for w in supply
+ if w.style is STYLE_HOVER and w isnt hover
+ w.set_style STYLE_NORMAL
+ for w in on_canvas
+ if w.style is STYLE_HOVER and w isnt hover
+ w.set_style STYLE_NORMAL
+ if hover
+ hover.set_style STYLE_HOVER