As in revno 377 (and since revno 344), there is a general_refresh function in browser.py that is called in practically every callback dealing with task changes. Normally using TreeModel interfaces and signals from the datastore should be enough to properly update the taskbrowser, with no need to trigger refiltering of the models. We should inspect for a cleaner implementation of this, keeping (or even lowering!) actual performance impact when loading. It would require, I guess, a better handling of row-changed/row_inserted/row_removed signals from the TreeModel and a proper mechanism to insure that we don't trigger too many non-treeview updates (like active task number in titles for instance) when loading.