In fact the Ctr click trick is broken. Just download the small example I posted at: http://www.gamgi.org/treeview.c
When you start, it shows three rows: apples, oranges, bananas, in this order. So apples is automatically selected,
and the callback message shows that.
Now, press Ctr click on apples. You are unselecting apples but
gtk_tree_selection_get_selected says that apples was actually selected! gtk_tree_selection_get_selected should return FALSE, because no selection exists t this moment.
Press apples again. gtk_tree_selection_get_selected gives the right answer, you selected apples.
Now press Ctr click on bananas. You are selecting bananas (sort of) but gtk_tree_selection_get_selected again says that you selected apples!
So GTK_SELECTION_SINGLE is unnusable, even if you accept the default and the Ctr click trick.