1
<chapter id='Pop_Up_Widgets'>
2
<title>Pop-Up Widgets</title>
4
Pop-up widgets are used to create windows outside of the
5
window hierarchy defined by the widget tree.
6
Each pop-up child has a window that is a descendant of the root window,
7
so that the pop-up window is not clipped by the pop-up widget's parent window.
8
Therefore, pop-ups are created and attached differently to their widget parent
9
than normal widget children.
13
A parent of a pop-up widget does not actively manage its pop-up children;
14
in fact, it usually does not operate upon them in any way.
15
The <emphasis remap='I'>popup_list</emphasis> field in the
16
<function>CorePart</function>
17
structure contains the list of its pop-up children.
18
This pop-up list exists mainly to provide the proper place in the widget
19
hierarchy for the pop-up to get resources and to provide a place for
20
<xref linkend='XtDestroyWidget' xrefstyle='select: title'/>
21
to look for all extant children.
27
widget can have both normal and pop-up children.
28
A pop-up can be popped up from almost anywhere, not just by its parent.
29
The term <emphasis remap='I'>child</emphasis> always refers to a normal, geometry-managed widget
30
on the composite widget's list of children, and the term
31
<emphasis remap='I'>pop-up child</emphasis> always refers to a
32
widget on the pop-up list.
35
<sect1 id="Pop_Up_Widget_Types">
36
<title>Pop-Up Widget Types</title>
38
There are three kinds of pop-up widgets:
41
<itemizedlist spacing='compact'>
47
A modeless pop-up (for example, a dialog box that does not prevent
48
continued interaction with the rest of the application)
49
can usually be manipulated by the window manager
50
and looks like any other application window from the
52
The application main window itself is a special case of a modeless pop-up.
60
A modal pop-up (for example, a dialog box that requires user input to
62
can sometimes be manipulated by the window manager,
63
and except for events that occur in the dialog box,
64
it disables user-event distribution to the rest of the application.
72
A spring-loaded pop-up (for example, a menu)
73
can seldom be manipulated by the window manager,
74
and except for events that occur in the pop-up or its descendants,
75
it disables user-event distribution to all other applications.
80
Modal pop-ups and spring-loaded pop-ups are very similar and should be coded as
81
if they were the same.
82
In fact, the same widget (for example, a ButtonBox or Menu widget) can be used both
83
as a modal pop-up and as a spring-loaded pop-up within the same application.
84
The main difference is that spring-loaded pop-ups are brought up
85
with the pointer and, because of the grab that the pointer button causes,
86
require different processing by the Intrinsics.
87
Furthermore, all user input remap events occurring outside the spring-loaded
88
pop-up (e.g., in a descendant) are also delivered to the spring-loaded
89
pop-up after they have been dispatched to the appropriate descendant, so
90
that, for example, button-up can take down a spring-loaded pop-up no
96
Any kind of pop-up, in turn, can pop up other widgets.
97
Modal and spring-loaded pop-ups can constrain user events to
98
the most recent such pop-up or allow user events to be dispatched
99
to any of the modal or spring-loaded pop-ups
104
Regardless of their type,
105
all pop-up widget classes are responsible for communicating with the
106
X window manager and therefore are subclasses of
113
<sect1 id="Creating_a_Pop_Up_Shell">
114
<title>Creating a Pop-Up Shell</title>
116
For a widget to be popped up,
117
it must be the child of a pop-up shell widget.
118
None of the Intrinsics-supplied shells will
119
simultaneously manage more than one child.
120
Both the shell and child taken together are referred to as the pop-up.
121
When you need to use a pop-up,
122
you always refer to the pop-up by the pop-up shell,
127
To create a pop-up shell, use
128
<xref linkend='XtCreatePopupShell' xrefstyle='select: title'/>.
131
<funcsynopsis id='XtCreatePopupShell'>
133
<funcdef>Widget <function>XtCreatePopupShell</function></funcdef>
134
<paramdef>String <parameter>name</parameter></paramdef>
135
<paramdef>WidgetClass <parameter>widget_class</parameter></paramdef>
136
<paramdef>Widget <parameter>parent</parameter></paramdef>
137
<paramdef>ArgList <parameter>args</parameter></paramdef>
138
<paramdef>Cardinal <parameter>num_args</parameter></paramdef>
145
<emphasis remap='I'>name</emphasis>
149
Specifies the instance name for the created shell widget.
155
<emphasis remap='I'>widget_class</emphasis>
159
Specifies the widget class pointer for the created shell widget.
165
<emphasis remap='I'>parent</emphasis>
169
Specifies the parent widget. Must be of class Core or any subclass thereof.
175
<emphasis remap='I'>args</emphasis>
179
Specifies the argument list to override any other resource specifications.
185
<emphasis remap='I'>num_args</emphasis>
189
Specifies the number of entries in the argument list.
197
<xref linkend='XtCreatePopupShell' xrefstyle='select: title'/>
198
function ensures that the specified class is a subclass of
200
and, rather than using insert_child to attach the widget to the parent's
201
<emphasis remap='I'>children</emphasis> list,
202
attaches the shell to the parent's <emphasis remap='I'>popup_list</emphasis> directly.
206
The screen resource for this widget is determined by first scanning
207
<emphasis remap='I'>args</emphasis> for the XtNscreen argument. If no XtNscreen argument is
208
found, the resource database associated with the parent's screen
209
is queried for the resource <emphasis remap='I'>name</emphasis>.screen, class
210
<emphasis remap='I'>Class</emphasis>.Screen where <emphasis remap='I'>Class</emphasis> is the <emphasis remap='I'>class_name</emphasis>
212
<function>CoreClassPart</function>
213
of the specified <emphasis remap='I'>widget_class</emphasis>.
214
If this query fails, the parent's screen is used.
215
Once the screen is determined,
216
the resource database associated with that screen is used to retrieve
217
all remaining resources for the widget not specified in
218
<emphasis remap='I'>args</emphasis>.
222
A spring-loaded pop-up invoked from a translation table via
223
<xref linkend='XtMenuPopup' xrefstyle='select: title'/>
225
at the time that the translation is invoked,
226
so the translation manager can find the shell by name.
227
Pop-ups invoked in other ways can be created when
228
the pop-up actually is needed.
229
This delayed creation of the shell is particularly useful when you pop up
230
an unspecified number of pop-ups.
231
You can look to see if an appropriate unused shell (that is, not
232
currently popped up) exists and create a new shell if needed.
236
To create a pop-up shell using varargs lists, use
237
<xref linkend='XtVaCreatePopupShell' xrefstyle='select: title'/>.
240
<funcsynopsis id='XtVaCreatePopupShell'>
242
<funcdef>Widget <function>XtVaCreatePopupShell</function></funcdef>
243
<paramdef>String <parameter>name</parameter></paramdef>
244
<paramdef>WidgetClass <parameter>widget_class</parameter></paramdef>
245
<paramdef>Widget <parameter>parent</parameter></paramdef>
246
<paramdef><parameter>...</parameter></paramdef>
253
<emphasis remap='I'>name</emphasis>
257
Specifies the instance name for the created shell widget.
263
<emphasis remap='I'>widget_class</emphasis>
267
Specifies the widget class pointer for the created shell widget.
273
<emphasis remap='I'>parent</emphasis>
277
Specifies the parent widget. Must be of class Core or any subclass thereof.
285
Specifies the variable argument list to override any other
286
resource specifications.
294
<xref linkend='XtVaCreatePopupShell' xrefstyle='select: title'/>
295
is identical in function to
296
<xref linkend='XtCreatePopupShell' xrefstyle='select: title'/>
297
with <emphasis remap='I'>the</emphasis> args and <emphasis remap='I'>num_args</emphasis> parameters replaced by a varargs list as
298
described in Section 2.5.1.
302
<sect1 id="Creating_Pop_Up_Children">
303
<title>Creating Pop-Up Children</title>
305
Once a pop-up shell is created,
306
the single child of the pop-up shell can be created
307
either statically or dynamically.
312
an application can create the child of the pop-up shell,
313
which is appropriate for pop-up children composed of a fixed set
315
The application can change the state of the subparts of
316
the pop-up child as the application state changes.
317
For example, if an application creates a static menu,
319
<xref linkend='XtSetSensitive' xrefstyle='select: title'/>
321
<xref linkend='XtSetValues' xrefstyle='select: title'/>)
322
on any of the buttons that make up the menu.
323
Creating the pop-up child early means that pop-up time is minimized,
324
especially if the application calls
325
<xref linkend='XtRealizeWidget' xrefstyle='select: title'/>
326
on the pop-up shell at startup.
327
When the menu is needed,
328
all the widgets that make up the menu already exist and need only be mapped.
329
The menu should pop up as quickly as the X server can respond.
334
an application can postpone the creation of the child until it is needed,
335
which minimizes application startup time and allows the pop-up child to
336
reconfigure itself each time it is popped up.
338
the pop-up child creation routine might poll the application
339
to find out if it should change the sensitivity of any of its subparts.
343
Pop-up child creation does not map the pop-up,
344
even if you create the child and call
345
<xref linkend='XtRealizeWidget' xrefstyle='select: title'/>
350
All shells have pop-up and pop-down callbacks,
351
which provide the opportunity either to make last-minute changes to a
352
pop-up child before it is popped up or to change it after it is popped down.
353
Note that excessive use of pop-up callbacks can make
354
popping up occur more slowly.
358
<sect1 id="Mapping_a_Pop_Up_Widget">
359
<title>Mapping a Pop-Up Widget</title>
361
Pop-ups can be popped up through several mechanisms:
363
<itemizedlist spacing='compact'>
367
<xref linkend='XtPopup' xrefstyle='select: title'/>
369
<xref linkend='XtPopupSpringLoaded' xrefstyle='select: title'/>.
374
One of the supplied callback procedures
375
<xref linkend='XtCallbackNone' xrefstyle='select: title'/>,
376
<xref linkend='XtCallbackNonexclusive' xrefstyle='select: title'/>,
378
<xref linkend='XtCallbackExclusive' xrefstyle='select: title'/>.
383
The standard translation action
384
<xref linkend='XtMenuPopup' xrefstyle='select: title'/>.
390
Some of these routines take an argument of type
391
<function>XtGrabKind</function>,
395
typedef enum {XtGrabNone, XtGrabNonexclusive, XtGrabExclusive} XtGrabKind;
399
The create_popup_child_proc procedure pointer
400
in the shell widget instance record is of type
401
<xref linkend='XtCreatePopupChildProc' xrefstyle='select: title'/>.
404
<funcsynopsis id='XtCreatePopupChildProc'>
406
<funcdef>void <function>*XtCreatePopupChildProc</function></funcdef>
407
<paramdef>Widget <parameter>w</parameter></paramdef>
414
<emphasis remap='I'>w</emphasis>
418
Specifies the shell widget being popped up.
426
To map a pop-up from within an application, use
427
<xref linkend='XtPopup' xrefstyle='select: title'/>.
430
<funcsynopsis id='XtPopup'>
432
<funcdef>void <function>XtPopup</function></funcdef>
433
<paramdef>Widget <parameter>popup_shell</parameter></paramdef>
434
<paramdef>XtGrabKind <parameter>grab_kind</parameter></paramdef>
441
<emphasis remap='I'>popup_shell</emphasis>
445
Specifies the shell widget.
451
<emphasis remap='I'>grab_kind</emphasis>
455
Specifies the way in which user events should be constrained.
463
<xref linkend='XtPopup' xrefstyle='select: title'/>
464
function performs the following:
466
<itemizedlist spacing='compact'>
470
<xref linkend='XtCheckSubclass' xrefstyle='select: title'/>
471
to ensure <emphasis remap='I'>popup_shell</emphasis>'s class is a subclass of
472
<function>shellWidgetClass</function>.
477
Raises the window and returns if the shell's <emphasis remap='I'>popped_up</emphasis> field is already
478
<function>True</function>.
483
Calls the callback procedures on the shell's <emphasis remap='I'>popup_callback</emphasis> list,
484
specifying a pointer to the value of <emphasis remap='I'>grab_kind</emphasis> as the <emphasis remap='I'>call_data</emphasis>
490
Sets the shell <emphasis remap='I'>popped_up</emphasis> field to
491
<function>True</function>,
492
the shell <emphasis remap='I'>spring_loaded</emphasis> field to
493
<function>False</function>,
494
and the shell <emphasis remap='I'>grab_kind</emphasis> field from <emphasis remap='I'>grab_kind</emphasis>.
499
If the shell's <emphasis remap='I'>create_popup_child_proc</emphasis> field is non-NULL,
500
<xref linkend='XtPopup' xrefstyle='select: title'/>
501
calls it with <emphasis remap='I'>popup_shell</emphasis> as the parameter.
506
If <emphasis remap='I'>grab_kind</emphasis> is either
507
<function>XtGrabNonexclusive</function>
509
<function>XtGrabExclusive</function>,
513
XtAddGrab(<emphasis remap='I'>popup_shell</emphasis>, (<emphasis remap='I'>grab_kind</emphasis> == XtGrabExclusive), False)
519
<xref linkend='XtRealizeWidget' xrefstyle='select: title'/>
520
with <emphasis remap='I'>popup_shell</emphasis> specified.
526
<function>XMapRaised</function>
527
with the window of <emphasis remap='I'>popup_shell</emphasis>.
532
To map a spring-loaded pop-up from within an application, use
533
<xref linkend='XtPopupSpringLoaded' xrefstyle='select: title'/>.
536
<funcsynopsis id='XtPopupSpringLoaded'>
538
<funcdef>void <function>XtPopupSpringLoaded</function></funcdef>
539
<paramdef>Widget <parameter>popup_shell</parameter></paramdef>
546
<emphasis remap='I'>popup_shell</emphasis>
550
Specifies the shell widget to be popped up.
558
<xref linkend='XtPopupSpringLoaded' xrefstyle='select: title'/>
559
function performs exactly as
560
<xref linkend='XtPopup' xrefstyle='select: title'/>
561
except that it sets the shell <emphasis remap='I'>spring_loaded</emphasis> field to
562
<function>True</function>
564
<xref linkend='XtAddGrab' xrefstyle='select: title'/>
565
with <emphasis remap='I'>exclusive</emphasis>
566
<function>True</function>
567
and <emphasis remap='I'>spring-loaded</emphasis>
568
<function>True</function>.
572
To map a pop-up from a given widget's callback list,
573
you also can register one of the
574
<xref linkend='XtCallbackNone' xrefstyle='select: title'/>,
575
<xref linkend='XtCallbackNonexclusive' xrefstyle='select: title'/>,
577
<xref linkend='XtCallbackExclusive' xrefstyle='select: title'/>
578
convenience routines as callbacks, using the pop-up shell widget as the
582
<funcsynopsis id='XtCallbackNone'>
584
<funcdef>void <function>XtCallbackNone</function></funcdef>
585
<paramdef>Widget <parameter>w</parameter></paramdef>
586
<paramdef>XtPointer <parameter>client_data</parameter></paramdef>
587
<paramdef>XtPointer <parameter>call_data</parameter></paramdef>
594
<emphasis remap='I'>w</emphasis>
598
Specifies the widget.
604
<emphasis remap='I'>client_data</emphasis>
608
Specifies the pop-up shell.
614
<emphasis remap='I'>call_data</emphasis>
618
Specifies the callback data argument,
619
which is not used by this procedure.
626
<funcsynopsis id='XtCallbackNonexclusive'>
628
<funcdef>void <function>XtCallbackNonexclusive</function></funcdef>
629
<paramdef>Widget <parameter>w</parameter></paramdef>
630
<paramdef>XtPointer <parameter>client_data</parameter></paramdef>
631
<paramdef>XtPointer <parameter>call_data</parameter></paramdef>
638
<emphasis remap='I'>w</emphasis>
642
Specifies the widget.
648
<emphasis remap='I'>client_data</emphasis>
652
Specifies the pop-up shell.
658
<emphasis remap='I'>call_data</emphasis>
662
Specifies the callback data argument,
663
which is not used by this procedure.
670
<funcsynopsis id='XtCallbackExclusive'>
672
<funcdef>void <function>XtCallbackExclusive</function></funcdef>
673
<paramdef>Widget <parameter>w</parameter></paramdef>
674
<paramdef>XtPointer <parameter>client_data</parameter></paramdef>
675
<paramdef>XtPointer <parameter>call_data</parameter></paramdef>
682
<emphasis remap='I'>w</emphasis>
686
Specifies the widget.
692
<emphasis remap='I'>client_data</emphasis>
696
Specifies the pop-up shell.
702
<emphasis remap='I'>call_data</emphasis>
706
Specifies the callback data argument,
707
which is not used by this procedure.
715
<xref linkend='XtCallbackNone' xrefstyle='select: title'/>,
716
<xref linkend='XtCallbackNonexclusive' xrefstyle='select: title'/>,
718
<xref linkend='XtCallbackExclusive' xrefstyle='select: title'/>
720
<xref linkend='XtPopup' xrefstyle='select: title'/>
721
with the shell specified by the <emphasis remap='I'>client_data</emphasis> argument
722
and <emphasis remap='I'>grab_kind</emphasis> set as the name specifies.
723
<xref linkend='XtCallbackNone' xrefstyle='select: title'/>,
724
<xref linkend='XtCallbackNonexclusive' xrefstyle='select: title'/>,
726
<xref linkend='XtCallbackExclusive' xrefstyle='select: title'/>
728
<function>XtGrabNone</function>,
729
<function>XtGrabNonexclusive</function>,
731
<function>XtGrabExclusive</function>,
733
Each function then sets the widget that executed the callback list
734
to be insensitive by calling
735
<xref linkend='XtSetSensitive' xrefstyle='select: title'/>.
736
Using these functions in callbacks is not required.
738
an application must provide customized code for
739
callbacks that create pop-up shells dynamically or that must do more than
740
desensitizing the button.
744
Within a translation table,
745
to pop up a menu when a key or pointer button is pressed or when the pointer
746
is moved into a widget, use
747
<xref linkend='XtMenuPopup' xrefstyle='select: title'/>,
749
<function>MenuPopup</function>.
750
From a translation writer's point of view,
751
the definition for this translation action is
754
<funcsynopsis id='XtMenuPopup'>
756
<funcdef>void <function>XtMenuPopup</function></funcdef>
757
<paramdef>String <parameter>shell_name</parameter></paramdef>
764
<emphasis remap='I'>shell_name</emphasis>
768
Specifies the name of the shell widget to pop up.
775
<xref linkend='XtMenuPopup' xrefstyle='select: title'/>
776
is known to the translation manager,
777
which registers the corresponding built-in action procedure
778
<function>XtMenuPopupAction</function>
780
<xref linkend='XtRegisterGrabAction' xrefstyle='select: title'/>
781
specifying <emphasis remap='I'>owner_events</emphasis>
782
<function>True</function>,
783
<emphasis remap='I'>event_mask</emphasis>
784
<function>ButtonPressMask</function>
785
<function>|</function>
786
<function>ButtonReleaseMask</function>,
787
and <emphasis remap='I'>pointer_mode</emphasis> and <emphasis remap='I'>keyboard_mode</emphasis>
788
<function>GrabModeAsync</function>.
793
<xref linkend='XtMenuPopup' xrefstyle='select: title'/>
795
<function>ButtonPress</function>,
797
<xref linkend='XtPopupSpringLoaded' xrefstyle='select: title'/>
798
on the specified shell widget.
800
<xref linkend='XtMenuPopup' xrefstyle='select: title'/>
802
<function>KeyPress</function>
804
<function>EnterWindow</function>,
806
<xref linkend='XtPopup' xrefstyle='select: title'/>
807
on the specified shell widget with <emphasis remap='I'>grab_kind</emphasis> set to
808
<function>XtGrabNonexclusive</function>.
809
Otherwise, the translation manager generates a
810
warning message and ignores the action.
814
<xref linkend='XtMenuPopup' xrefstyle='select: title'/>
815
tries to find the shell by searching the widget tree starting at
816
the widget in which it is invoked.
817
If it finds a shell with the specified name in the pop-up children of
818
that widget, it pops up the shell with the appropriate parameters.
819
Otherwise, it moves up the parent chain to find a pop-up child with the
822
<xref linkend='XtMenuPopup' xrefstyle='select: title'/>
823
gets to the application top-level shell widget and has not
824
found a matching shell, it generates a warning and returns immediately.
828
<sect1 id="Unmapping_a_Pop_Up_Widget">
829
<title>Unmapping a Pop-Up Widget</title>
831
Pop-ups can be popped down through several mechanisms:
833
<itemizedlist spacing='compact'>
837
<xref linkend='XtPopdown' xrefstyle='select: title'/>
842
The supplied callback procedure
843
<xref linkend='XtCallbackPopdown' xrefstyle='select: title'/>
848
The standard translation action
849
<xref linkend='XtMenuPopdown' xrefstyle='select: title'/>
854
To unmap a pop-up from within an application, use
855
<xref linkend='XtPopdown' xrefstyle='select: title'/>.
858
<funcsynopsis id='XtPopdown'>
860
<funcdef>void <function>XtPopdown</function></funcdef>
861
<paramdef>Widget <parameter>popup_shell</parameter></paramdef>
868
<emphasis remap='I'>popup_shell</emphasis>
872
Specifies the shell widget to pop down.
880
<xref linkend='XtPopdown' xrefstyle='select: title'/>
881
function performs the following:
883
<itemizedlist spacing='compact'>
887
<xref linkend='XtCheckSubclass' xrefstyle='select: title'/>
888
to ensure <emphasis remap='I'>popup_shell</emphasis>'s class is a subclass of
889
<function>shellWidgetClass</function>.
894
Checks that the <emphasis remap='I'>popped_up</emphasis> field of <emphasis remap='I'>popup_shell</emphasis> is
895
<function>True</function>;
896
otherwise, it returns immediately.
901
Unmaps <emphasis remap='I'>popup_shell</emphasis>'s window and, if <emphasis remap='I'>override_redirect</emphasis> is
902
<function>False</function>,
904
<function>UnmapNotify</function>
905
event as specified by the <emphasis remap='I'>Inter-Client Communication Conventions Manual</emphasis>.
910
If <emphasis remap='I'>popup_shell</emphasis>'s <emphasis remap='I'>grab_kind</emphasis> is either
911
<function>XtGrabNonexclusive</function>
913
<function>XtGrabExclusive</function>,
915
<xref linkend='XtRemoveGrab' xrefstyle='select: title'/>.
920
Sets <emphasis remap='I'>popup_shell</emphasis>'s <emphasis remap='I'>popped_up</emphasis> field to
921
<function>False</function>.
926
Calls the callback procedures on the shell's <emphasis remap='I'>popdown_callback</emphasis> list,
927
specifying a pointer to the value of the shell's <emphasis remap='I'>grab_kind</emphasis> field
928
as the <emphasis remap='I'>call_data</emphasis> argument.
933
To pop down a pop-up from a callback list, you may use the callback
934
<xref linkend='XtCallbackPopdown' xrefstyle='select: title'/>.
937
<funcsynopsis id='XtCallbackPopdown'>
939
<funcdef>void <function>XtCallbackPopdown</function></funcdef>
940
<paramdef>Widget <parameter>w</parameter></paramdef>
941
<paramdef>XtPointer <parameter>client_data</parameter></paramdef>
942
<paramdef>XtPointer <parameter>call_data</parameter></paramdef>
949
<emphasis remap='I'>w</emphasis>
953
Specifies the widget.
959
<emphasis remap='I'>client_data</emphasis>
963
Specifies a pointer to the
964
<function>XtPopdownID</function>
971
<emphasis remap='I'>call_data</emphasis>
975
Specifies the callback data argument,
976
which is not used by this procedure.
984
<xref linkend='XtCallbackPopdown' xrefstyle='select: title'/>
985
function casts the <emphasis remap='I'>client_data</emphasis> parameter to a pointer of type
986
<function>XtPopdownID</function>.
991
Widget enable_widget;
992
} XtPopdownIDRec, *XtPopdownID;
995
The <emphasis remap='I'>shell_widget</emphasis> is the pop-up shell to pop down,
996
and the <emphasis remap='I'>enable_widget</emphasis> is usually the widget that was used to pop it up
997
in one of the pop-up callback convenience procedures.
1001
<xref linkend='XtCallbackPopdown' xrefstyle='select: title'/>
1003
<xref linkend='XtPopdown' xrefstyle='select: title'/>
1004
with the specified <emphasis remap='I'>shell_widget</emphasis>
1006
<xref linkend='XtSetSensitive' xrefstyle='select: title'/>
1007
to resensitize <emphasis remap='I'>enable_widget</emphasis>.
1011
Within a translation table,
1012
to pop down a spring-loaded menu when a key or pointer button is
1013
released or when the
1014
pointer is moved into a widget, use
1015
<xref linkend='XtMenuPopdown' xrefstyle='select: title'/>
1017
<function>MenuPopdown</function>.
1018
From a translation writer's point of view,
1019
the definition for this translation action is
1022
<funcsynopsis id='XtMenuPopdown'>
1024
<funcdef>void <function>XtMenuPopdown</function></funcdef>
1025
<paramdef>String <parameter>shell_name</parameter></paramdef>
1032
<emphasis remap='I'>shell_name</emphasis>
1036
Specifies the name of the shell widget to pop down.
1043
If a shell name is not given,
1044
<xref linkend='XtMenuPopdown' xrefstyle='select: title'/>
1046
<xref linkend='XtPopdown' xrefstyle='select: title'/>
1047
with the widget for which the translation is specified.
1048
If <emphasis remap='I'>shell_name</emphasis> is specified in the translation table,
1049
<xref linkend='XtMenuPopdown' xrefstyle='select: title'/>
1050
tries to find the shell by looking up the widget tree starting at the
1051
widget in which it is invoked.
1052
If it finds a shell with the specified name in the pop-up children
1053
of that widget, it pops down the shell;
1054
otherwise, it moves up the parent chain to find a pop-up child with the
1057
<xref linkend='XtMenuPopdown' xrefstyle='select: title'/>
1058
gets to the application top-level shell widget
1059
and cannot find a matching shell,
1060
it generates a warning and returns immediately.