Hmm, after studying the behaviour of the icon selection code a little- i think it would be better if it checked the icons in reverse - this would prevent icon labels overlapping icons,
Also, It might be worth considering speeding up the loop by skipping icons "outside" of the current viewable are.. needs some more though.
*Bug* - The "changed" state of icons isnt being properly examined yet i dont think... maybe need to spend some time making sure it works as it should =)
This manifests itself in a number of ways - from icons flashing when nothing should be occuring - to icons being drawn twice causing transparent areas to become opaque looking.
Ive fixed a number of other bugs, and overall the code seems to be working better (read slightly faster, and doing what it should mostly ;P)