I did a little spelunking with negative results.
0. Installed current macports sources for gtk3 (includes gdk3) and
1. There's nothing obvious in the implementation of
gdk_events_pending, which first looks at event queues, I think,
then goes and examines the "events pending" flag on each open
display. If there's a bug, since peek doesn't find any events, I
guess it's because somehow that flag doesn't get cleared even
though the queue is drained, but I didn't feel like going after
2. There are no bugs on GNOME.org
that look like this. Ditto
3. GNU Emacs doesn't use the toolkit event loop at all, but rather
invokes event dispatch itself at the glib level.
4. glib also basically just checks "events pending" flags.
5. Thank god for grep. GNU keeps all of its events and command loops
in "keyboard.c", and its handling of window system events in
"xgselect.c", exactly where you'd expect to find them. <sigh/>
I'll push on #1 later, and if that doesn't get anywhere I'll file a
bug on GNOME.org