On some configurations and depending on the screen size, the menu may pop empty : http://i53.tinypic.com/2wn5m6v.jpg
this is due to the fact that the size of the screen (used from allocation) is not really computed:
Though, in case of horizontal panel, the allocation is only used if x or y are out of bounds. this is the case with a top panel (*y = 0 - h;) and then, y gets an incorect value.
The obious solution is to replace gtk_widget_set_allocation by gtk_widget_get_allocation
Hopes it 'll helps