GtkMenu::popup
void popup([
      GtkWidget 
      parent_menu_shell
     , [
      GtkWidget 
      parent_menu_item
     , [
      GtkMenuPositionFunc 
      pos_function
     , int button, int activate_time]]]); 
    
     The popup()  method looks fairly
     intimidating at the outset, but is actually quite straightforward to
     use.
    
    
     The first thing to be aware of is that the 
     parent_menu_shell and
     parent_menu_item parameters would generally
     only be used internally, to associate the popped-up menu with a given
     GtkMenuShell descendant, or 
     GtkMenuItem, or both.  In a freestanding popup
     menu, both parameters should be passed as null.
    
    
     The third parameter concerns the positioning of the popup menu, and
     has as its default the position of the mouse pointer.  In order to
     set a different position, you will need to set up a function that will
     return an array of the co-ordinates, and call it from the 
     pos_function parameter.
     
    
    
     The fourth parameter refers to the mouse button emitting the
     "button-release-event" that
     will be compared with the button emitting the 
     "button-press-event" in
     order to set the timer in the final parameter.  This only works if
     you happen to be triggering the popup function with a button press,
     and the button pressed and button released are the same - in all other
     situations, the time element is ignored.  However, setting the 
     button parameter to 1 or 
     3 will speed up the deactivation when the left or
     right mouse button is released respectively, regardless of the callback
     event.
    
    
     The final parameter, activate_time, sets the
     time conditions for the menu's deactivation.  If you have used a button
     press event and ensured that the initial press and later release have
     the same valid integer value, then setting the timer to 
     0 will make the menu disappear as soon as the user
     releases the mouse-button that triggered it.  The safest setting for
     this parameter is 
     $event->time - 
     this being a setting that all GdkEvent 
     structures share; it causes the popup menu to react as you'd expect it
     to, and won't spring any surprises if you duplicate or otherwise adapt
     the original callback event.