I do not follow this thread, but can't you just compare the new allocation to the current one and do nothing when they are equal?
That doesn't work, they seem to always be equal. I'm comparing the allocation being passed to the alloc-event handler in the second parameter and the allocation of the widget itself using something like GTK_WIDGET(object)->allocation.width. Seems like alloc-event gets called after the widget is allocated space, so that's the correct behaviour. -Jim