If you are not writing GLib or Gtk, you probably don't need subdirectories in your header paths. I, too, do this often, and I think I'm ready to stop.
For example, in the above example, we include gtk/gtk.h. This was necessary (at least at one time) because we would have gtk/*, gdk/*, and possibly other headers all within this top-level directory (/usr/include/gtk-3.0).
For the rest of us, having such a separation of headers is likely not necessary. And if it is, you can just have a toplevel header that can include files from those subdirectories. So for example, my quite annoying choice to do
should just be
I'll likely fix these in the near future unless someone has a compelling reason that I've overlooked.