replace std::find_if with slightly more normal looping

this is (imnsho and all those things) a bit more readable, and fixes a
bad bug where the whole model was essentially resetting itself each time
anything in the desktop dir changed, leading to newly added files having
random positions instead of being appended at the end.