Hello
Here are some remarks about the spray tool that are not related to its UI.
Major issues: 1. The tool is very slow in single path mode - it updates XML after adding each object. XML should be updated only when the mouse is released, like in the node tool. 2. Single path mode uses sp_selected_path_union, which spams the undo stack with union operations and destroys selection. Ideally, 2Geom or livarot functions should be used directly, and if that's not possible, sp_selected_path_union_skip_undo. 3. Undo doesn't work correctly for single path mode - Ctrl+Z undoes only one sprayed copy.
Less important issues: 4. Clones are created by creating XML nodes directly. Shouldn't the SP layer be used instead? 5. Cryptic pref names like "doo", "doh". 6. sp_spray_recursive has lots of parameters. 7. spray-context.cpp:554 is a crucial formula that is unreadable and undocumented. 8. Indentation in sp_spray_context_root_handler is, mildly put, unorthodox. 9. get_dilate_radius, get_path_force, get_path_mean, etc. - I don't like this. 10. random_position - data passed by non-const reference to a function that doesn't modify it.
Regards, Krzysztof