aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1996-08-12 18:57:08 +0000
committerRichard M. Stallman1996-08-12 18:57:08 +0000
commit923f85be1c97f16ba096d1d33e8b77ce4aff24ed (patch)
tree360cb9c26b9af9ba4007ee05df6f9f52bf75fcd7
parent9da6682fad2051665d7667593225e832317cb093 (diff)
downloademacs-923f85be1c97f16ba096d1d33e8b77ce4aff24ed.tar.gz
emacs-923f85be1c97f16ba096d1d33e8b77ce4aff24ed.zip
(update_one_menu_entry): Fix previous change:
When XmIsCascadeButton, don't call XmCreateCascadeButtonGadget, just modify the existing one.
-rw-r--r--lwlib/lwlib-Xm.c55
1 files changed, 32 insertions, 23 deletions
diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c
index 38713adb25f..2050c295755 100644
--- a/lwlib/lwlib-Xm.c
+++ b/lwlib/lwlib-Xm.c
@@ -510,9 +510,8 @@ update_one_menu_entry (instance, widget, val, deep_p)
510 if (contents) 510 if (contents)
511 { 511 {
512 unsigned int old_num_children, i; 512 unsigned int old_num_children, i;
513 Widget button, parent; 513 Widget parent;
514 Widget *widget_list; 514 Widget *widget_list;
515 int buttonchange;
516 515
517 parent = XtParent (widget); 516 parent = XtParent (widget);
518 widget_list = XtCompositeChildren (parent, &old_num_children); 517 widget_list = XtCompositeChildren (parent, &old_num_children);
@@ -523,27 +522,37 @@ update_one_menu_entry (instance, widget, val, deep_p)
523 break; 522 break;
524 if (i == old_num_children) 523 if (i == old_num_children)
525 abort (); 524 abort ();
526 /* `buttonchange' indicates the parent button is being 525 if (XmIsCascadeButton (widget_list[i]))
527 exchanged with a CascadeButton. */ 526 {
528 buttonchange = !XmIsCascadeButton (widget_list[i]); 527 menu = XmCreatePulldownMenu (parent, XtName(widget), NULL, 0);
529 if (buttonchange) 528 make_menu_in_widget (instance, menu, contents, 0);
530 XtDestroyWidget (widget_list[i]); 529 ac = 0;
531 menu = XmCreatePulldownMenu (parent, val->name, NULL, 0); 530 XtSetArg (al [ac], XmNsubMenuId, menu); ac++;
532 make_menu_in_widget (instance, menu, contents, 0); 531 XtSetValues (widget, al, ac);
533 ac = 0; 532 }
534 XtSetArg (al [ac], XmNsubMenuId, menu); ac++; 533 else
535 /* Non-zero values don't work reliably in 534 {
536 conjunction with Emacs' event loop */ 535 Widget button;
537 XtSetArg (al [ac], XmNmappingDelay, 0); ac++; 536
538 /* Tell Motif to put it in the right place. */ 537 /* The current menuitem is a XmPushButtonGadget, it
539 XtSetArg (al [ac], XmNpositionIndex, i); ac++; 538 needs to be replaced by a CascadeButtonGadget */
540 button = XmCreateCascadeButtonGadget (parent, val->name, al, ac); 539 XtDestroyWidget (widget_list[i]);
541 xm_update_label (instance, button, val); 540 menu = XmCreatePulldownMenu (parent, val->name, NULL, 0);
542 541 make_menu_in_widget (instance, menu, contents, 0);
543 XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback, 542 ac = 0;
544 (XtPointer)instance); 543 XtSetArg (al [ac], XmNsubMenuId, menu); ac++;
545 if (buttonchange) 544 /* Non-zero values don't work reliably in
546 XtManageChild (button); 545 conjunction with Emacs' event loop */
546 XtSetArg (al [ac], XmNmappingDelay, 0); ac++;
547 /* Tell Motif to put it in the right place */
548 XtSetArg (al [ac], XmNpositionIndex, i); ac++;
549 button = XmCreateCascadeButtonGadget (parent, val->name, al, ac);
550 xm_update_label (instance, button, val);
551
552 XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback,
553 (XtPointer)instance);
554 XtManageChild (button);
555 }
547 } 556 }
548 } 557 }
549 else if (!contents) 558 else if (!contents)