I've noticed that the patch for the smileys menu to works correctly with beryl/compiz is working only if you move the mouse horizontally. There's a little mistake in the handleLeaveEvent proc (I think a typical copy/paste bug). It checks twice the x coord and never the y coord.
You should only replace the line 735 in smileys.tcl from:
if { $pointer_x == -1 || $pointer_y==-1 || $x < 0 || $x > $x_geo || $x < 0 || $x > $x_geo } {
to
if { $pointer_x == -1 || $pointer_y==-1 || $x < 0 || $x > $x_geo || $y < 0 || $y > $y_geo } {
and line 728 in the same file from
set window_y [winfo rootx $w]
to
set window_y [winfo rooty $w]