Mercurial > emacs
diff lwlib/lwlib-Xm.c @ 15859:2cb422e2d16c
(update_one_menu_entry): Fix previous change:
When XmIsCascadeButton, don't call XmCreateCascadeButtonGadget,
just modify the existing one.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 12 Aug 1996 18:57:08 +0000 |
parents | 1ca5c3c9853a |
children | d4e514328333 |
line wrap: on
line diff
--- a/lwlib/lwlib-Xm.c Sun Aug 11 00:19:31 1996 +0000 +++ b/lwlib/lwlib-Xm.c Mon Aug 12 18:57:08 1996 +0000 @@ -510,9 +510,8 @@ if (contents) { unsigned int old_num_children, i; - Widget button, parent; + Widget parent; Widget *widget_list; - int buttonchange; parent = XtParent (widget); widget_list = XtCompositeChildren (parent, &old_num_children); @@ -523,27 +522,37 @@ break; if (i == old_num_children) abort (); - /* `buttonchange' indicates the parent button is being - exchanged with a CascadeButton. */ - buttonchange = !XmIsCascadeButton (widget_list[i]); - if (buttonchange) - XtDestroyWidget (widget_list[i]); - menu = XmCreatePulldownMenu (parent, val->name, NULL, 0); - make_menu_in_widget (instance, menu, contents, 0); - ac = 0; - XtSetArg (al [ac], XmNsubMenuId, menu); ac++; - /* Non-zero values don't work reliably in - conjunction with Emacs' event loop */ - XtSetArg (al [ac], XmNmappingDelay, 0); ac++; - /* Tell Motif to put it in the right place. */ - XtSetArg (al [ac], XmNpositionIndex, i); ac++; - button = XmCreateCascadeButtonGadget (parent, val->name, al, ac); - xm_update_label (instance, button, val); - - XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback, - (XtPointer)instance); - if (buttonchange) - XtManageChild (button); + if (XmIsCascadeButton (widget_list[i])) + { + menu = XmCreatePulldownMenu (parent, XtName(widget), NULL, 0); + make_menu_in_widget (instance, menu, contents, 0); + ac = 0; + XtSetArg (al [ac], XmNsubMenuId, menu); ac++; + XtSetValues (widget, al, ac); + } + else + { + Widget button; + + /* The current menuitem is a XmPushButtonGadget, it + needs to be replaced by a CascadeButtonGadget */ + XtDestroyWidget (widget_list[i]); + menu = XmCreatePulldownMenu (parent, val->name, NULL, 0); + make_menu_in_widget (instance, menu, contents, 0); + ac = 0; + XtSetArg (al [ac], XmNsubMenuId, menu); ac++; + /* Non-zero values don't work reliably in + conjunction with Emacs' event loop */ + XtSetArg (al [ac], XmNmappingDelay, 0); ac++; + /* Tell Motif to put it in the right place */ + XtSetArg (al [ac], XmNpositionIndex, i); ac++; + button = XmCreateCascadeButtonGadget (parent, val->name, al, ac); + xm_update_label (instance, button, val); + + XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback, + (XtPointer)instance); + XtManageChild (button); + } } } else if (!contents)