Call XtDispatchEvent for all ButtonRelease events.
xlwmenu.c now deals with posting the menu.
Check for events in subwidgets of the menu
when deciding whether to queue them for later handling.
ButtonRelease does so if within Vdouble_click_time.
Ignore mouse motion if button was already released.
(menu_item_selection): Declare volatile, if __STDC__.
(xmenu_show): Set that var.
(other_menu_bar_item_p): Return 0 if mouse is not in any menu bar item.
(xmenu_show, xdialog_show): Add casts in assignments
to widget_value fields from string contents.
(dispatch_dummy_expose): Cast arg to XtDispatchEvent.
[!USE_X_TOOLKIT] (xmenu_show): Right-justify char equivalents.
Use alloca for concatenated strings, if alloca is fast.
[USE_X_TOOLKIT] (xmenu_show): Use XtTranslateCoords.
(list_of_items): Handle nil in item list as left/right boundary.
(push_left_right_boundary): Record the boundary.
(xmenu_show): Disregard a boundary if any.
(xdialog_show): Really obey a boundary.
(Fx_popup_dialog): Don't pass those args; don't compute them.
Second arg is now just one pane. Lots of simplification.
Always start by decoding POSITION arg to get a frame.
[! USE_X_TOOLKIT]: Put the menu in middle of that frame.
(xdialog_show): Call lw_modify_all_widgets properly.
Generate dialog's name at run time to specify number of buttons.
Report error if too many buttons to handle or if multiple panes.
(Fx_popup_dialog): New function.
(dialog_selection_callback): New function.
(xmenu_show) [USE_X_TOOLKIT]: Don't call lw_destroy_all_widgets at the end.
Do the work of construct_mouse_click in the ButtonRelease case.
don't require an open X connection.
(single_keymap_panes, keymap_panes, menu_item_enabled_p): New arg NOTREAL.
(Fx_popup_menu): Pass new arg (1 if POSITION is nil).
(menu_item_enabled_p): If NOTREAL, always return t.
(single_keymap_panes) [!USE_X_TOOLKIT]:
Append > to item_string if submenu.
[USE_X_TOOLKIT]: Display submenus in Xt style.
(menu_items): Record where submenus start and end.
(menu_items_submenu_depth): New variable.
(init_menu_items): Init it.
(push_submenu_start, push_submenu_end): New functions.
(grow_menu_items): New function.
(push_menu_pane, push_menu_item): Use it.
(push_menu_pane): Increment menu_items_n_panes only if depth is 0.
(single_keymap_panes) [USE_X_TOOLKIT]: Record submenus in menu_items.
(xmenu_show) [USE_X_TOOLKIT]: Give submenus to toolkit.
force the paned widget to resize to the right value.
(xmenu_show): No need to check a second time whether the mouse has
moved to another menu bar item. This slows down execution.