If you request an E-mail, Evolution will block the worker thread for getting your E-mail until the last folder you clicked is loaded. Try it — I’m not very sure what evolution will and what it wont do. Tinymail, however, will now, if you click an e-mail while you are loading a folder, restore the original folder and show the E-mail immediately. After it canceled the folder-loading request. It assumes the user wants to stay in the current folder if she’s going to read a message in that folder.
It has the same behaviour for switching a folder. So when you are loading a folder and you click a new folder, the request for loading the folder is canceled and the new request will happen instead. These two camel cancellations make tinymail very responsiveness.
I also removed the need for gdk_threads_enter in the status notification handler by throwing it to the GMainLoop. So the tinymail application developer does not have to care about threading issues in gdk/gtk+. The tinymail library takes care of that.
Update: About behdads announcement: I just added some tinymail proposals to the SoC ideas wiki page and applied for SoC mentor. I don’t know if it’s a good idea but if students are interested, feel free to propose it. Also note that I haven’t yet been accepted as mentor. Update-update: behdad accepted me as a SoC mentor.