This was also posted on Ubuntu Forums: http://ubuntuforums.org/showthread.php?p=5138485
Okay, I did a little test and although not "easy", it works.
A GtkToolButton is derived from GtkToolItem which is derived from GtkContainer. Peaking at the source for GtkToolButton, I see that it simply packs a GtkButton into itself. So, if we can get that GtkButton then we could connect to that button's "button-press-event". A GtkToolButton does not give you direct access to it's child GtkButton, however, we can use GtkContainer's functions to do so.
1. Get each GtkToolButton using gtk_builder_get_object()
2. Get a GList containing the children using gtk_container_get_children()
3. Get the first child using g_list_first() (this will be a GtkButton)
4. Connect to the button-press-event of that GtkButton.
5. In your handler, if it's a right click do what you gotta do and return TRUE. Otherwise return FALSE to let the normal handlers run.
This is a bit tedious, however, you can use the same function to handle the "button-press-event" for every button and you could write a loop using gtk_toolbar_get_n_items() and gtk_toolbar_get_nth_item() rather than calling gtk_builder_get_object() on every GtkToolButton.
You may want to run this idea through the gtk-app-devel mailing list to get some feedback from those guys' as I've never had to do this. I would also put some checks to make sure that the child widget you get using gtk_container_get_child is in fact a GtkButton (GTK_IS_BUTTON()).