diff options
| author | Richard M. Stallman | 1996-08-12 18:57:08 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1996-08-12 18:57:08 +0000 |
| commit | 923f85be1c97f16ba096d1d33e8b77ce4aff24ed (patch) | |
| tree | 360cb9c26b9af9ba4007ee05df6f9f52bf75fcd7 | |
| parent | 9da6682fad2051665d7667593225e832317cb093 (diff) | |
| download | emacs-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.c | 55 |
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) |