XMSELECTIONBOX(3)
π XmSelectionBox β the SelectionBox widget class π
okay bestie, welcome to XmSelectionBox from the library call crew π this is the widget class that's about to become your whole personality, so sit down, hydrate, and let's get into it.
β¨ NAME β¨
XmSelectionBox β the SelectionBox widget class. that's it, that's the name, iconic behavior π
π¦ SYNOPSIS π¦
#include <Xm/SelectioB.h>
(and yes bestie, that spelling of the header is exactly right β SelectioB.h, no n, don't @ me, that's just how it is π
)
πΈ DESCRIPTION πΈ
SelectionBox is a general dialog widget that lets the user select one item from a list. a whole queen who does one thing and does it flawlessly, no cap.
By default, a SelectionBox comes with all of this, pre-glowup'd:
- a scrolling list of alternatives π
- an editable text field for the selected alternative βοΈ
- labels for the list and the text field π·οΈ
- three or four buttons π«Ά
The default button labels are OK, Cancel, and Help. By default an Apply button is also created; if the parent of the SelectionBox is a DialogShell, it is managed; otherwise it is unmanaged. (so likeβ¦ it exists, it's just not showing up to the party yet π)
Additional children may be added to the SelectionBox after creation. The first child is used as a work area. The value of XmNchildPlacement decides if the work area gets placed above or below the Text area, or above or below the List area. Any additional children beyond that get laid out like this:
- Menubar β the first menu bar child is placed at the top of the window. The
XmQTmenuSystemtrait is used to check that it's actually the first MenuBar child. - Buttons β all
XmPushButtonwidgets or gadgets, and their subclasses, are placed after theOKbutton in the order of their creation (this order is checked using theXmQTactivatabletrait). The layout direction of the buttons depends on theXmNlayoutDirectionresource.
The layout of additional children that are not in the above categories is undefined. so like, don't count on it, bestie π
The user can select an item in two ways: by scrolling through the list and selecting the desired item, or by entering the item name directly into the text edit area. Selecting an item from the list causes that item name to appear in the selection text edit area. β¨ auto-fill energy β¨
The user may select a new item as many times as they want, no limits, we don't gatekeep. The item is not actually selected until the user presses the OK PushButton. like⦠commitment issues, but make it a dialog.
The default value for the XmBulletinBoard resource XmNcancelButton is the Cancel button β unless XmNdialogType is XmDIALOG_COMMAND, in which case the default is NULL. The default value for the XmBulletinBoard XmNdefaultButton resource is the OK button β unless XmNdialogType is XmDIALOG_COMMAND, in which case the default is NULL.
For SelectionBox and its subclasses, the default value for XmNinitialFocus is the text edit area. π
The user can specify resources in a resource file for the automatically created widgets and gadgets of SelectionBox. Here's the list of names and which SelectionBox area each one maps to:
- List Items Label β
Items - List Items β
ItemsList - Selection Label β
Selection - Selection Text β
TextorTextField - Selection Separator β
Separator
SelectionBox uses the XmQTaccessTextual, XmQTactivatable, and XmQTmenuSystem traits. trait girlie π§
π Descendants π
SelectionBox automatically creates the descendants listed below. An application can use XtNameToWidget to gain access to the named descendant. In addition, a user or an application can use the named descendant when specifying resource values.
(the original ships this as a whole table β here it is, unfolded, every single row, nothing dropped π)
Applyβ classXmPushButtonGadgetβ Apply buttonCancelβ classXmPushButtonGadgetβ Cancel buttonHelpβ classXmPushButtonGadgetβ Help buttonItemsβ classXmLabelGadgetβ title above the list of itemsItemsListβ classXmListβ list of items from which the user will selectItemsListSWβ classXmScrolledWindowβ ScrolledWindow parent ofItemsListOKβ classXmPushButtonGadgetβ OK buttonSelectionβ classXmLabelGadgetβ title above the selection boxSeparatorβ classXmSeparatorGadgetβ dividing line between selection box and buttonsTextβ classXmTextFieldβ selection box containing text of selected item
π Classes π
SelectionBox inherits behavior, resources, and traits from Core, Composite, Constraint, XmManager, and XmBulletinBoard. it's giving generational wealth, fr fr π
The class pointer is xmSelectionBoxWidgetClass.
The class name is XmSelectionBox.
β New Resources β
The following table defines a set of widget resources used by the programmer to specify data. The programmer can also set the resource values for the inherited classes to set attributes for this widget. To reference a resource by name or by class in a .Xdefaults file, remove the XmN or XmC prefix and use the remaining letters. To specify one of the defined values for a resource in a .Xdefaults file, remove the Xm prefix and use the remaining letters (in either lowercase or uppercase, but include any underscores between words). The codes in the access column indicate if the given resource can be set at creation time (C), set by using XtSetValues (S), retrieved by using XtGetValues (G), or is not applicable (N/A).
and that's where part 1 leaves us, bestie β the resource table itself is coming up next, so don't go anywhere π«Άβ¨
π XmSelectionBox Resource Set π
okay bestie, here's the full resource menu for XmSelectionBox β every single one, no skips, no "etc." π
ββοΈ the format is name Β· class Β· type Β· default Β· access code, so you always know what you're setting and where it comes from π
XmNapplyCallbackΒ· classXmCCallbackΒ· typeXtCallbackListΒ· defaultNULLΒ· accessCXmNapplyLabelStringΒ· classXmCApplyLabelStringΒ· typeXmStringΒ· defaultdynamicΒ· accessCSGXmNcancelCallbackΒ· classXmCCallbackΒ· typeXtCallbackListΒ· defaultNULLΒ· accessCXmNcancelLabelStringΒ· classXmCCancelLabelStringΒ· typeXmStringΒ· defaultdynamicΒ· accessCSGXmNchildPlacementΒ· classXmCChildPlacementΒ· typeunsigned charΒ· defaultXmPLACE_ABOVE_SELECTIONΒ· accessCSGXmNdialogTypeΒ· classXmCDialogTypeΒ· typeunsigned charΒ· defaultdynamicΒ· accessCGXmNhelpLabelStringΒ· classXmCHelpLabelStringΒ· typeXmStringΒ· defaultdynamicΒ· accessCSGXmNlistItemCountΒ· classXmCItemCountΒ· typeintΒ· default0Β· accessCSGXmNlistItemsΒ· classXmCItemsΒ· typeXmStringTableΒ· defaultNULLΒ· accessCSGXmNlistLabelStringΒ· classXmCListLabelStringΒ· typeXmStringΒ· defaultdynamicΒ· accessCSGXmNlistVisibleItemCountΒ· classXmCVisibleItemCountΒ· typeintΒ· defaultdynamicΒ· accessCSGXmNminimizeButtonsΒ· classXmCMinimizeButtonsΒ· typeBooleanΒ· defaultFalseΒ· accessCSGXmNmustMatchΒ· classXmCMustMatchΒ· typeBooleanΒ· defaultFalseΒ· accessCSGXmNnoMatchCallbackΒ· classXmCCallbackΒ· typeXtCallbackListΒ· defaultNULLΒ· accessCXmNokCallbackΒ· classXmCCallbackΒ· typeXtCallbackListΒ· defaultNULLΒ· accessCXmNokLabelStringΒ· classXmCOkLabelStringΒ· typeXmStringΒ· defaultdynamicΒ· accessCSGXmNselectionLabelStringΒ· classXmCSelectionLabelStringΒ· typeXmStringΒ· defaultdynamicΒ· accessCSGXmNtextAcceleratorsΒ· classXmCTextAcceleratorsΒ· typeXtAcceleratorsΒ· defaultdefaultΒ· accessCXmNtextColumnsΒ· classXmCColumnsΒ· typeshortΒ· defaultdynamicΒ· accessCSGXmNtextStringΒ· classXmCTextStringΒ· typeXmStringΒ· default""Β· accessCSG
β¨ the actual explanations, resource by resource β¨
π XmNapplyCallback
This is the list of callbacks that get called when the user activates the Apply button. The callback reason is XmCR_APPLY. π
π XmNapplyLabelString
This one is the string label for the Apply button. What the default is depends on your locale β in the C locale the default is Apply. πΈ
Now listen, this next bit matters: now that some default localized label strings are provided through message catalogs for the children of composite widgets, the labelString resources cannot be set on the child through default resource files. Instead, the resource provided at the parent level must be used. That's the whole vibe β parent level or nothing, bestie. π«Ά
π XmNcancelCallback
The list of callbacks called when the user activates the Cancel button. The callback reason is XmCR_CANCEL. π
π XmNcancelLabelString
The string label for the Cancel button. Locale-dependent default again β in the C locale the default is Cancel. π
And same deal as the Apply label, no cap: now that some default localized label strings are provided through message catalogs for the children of composite widgets, the labelString resources cannot be set on the child through default resource files. Instead, the resource provided at the parent level must be used. π
π XmNchildPlacement
This one specifies the placement of the work area child. The possible values are
XmPLACE_ABOVE_SELECTIONβ places the work area child above the Text areaXmPLACE_BELOW_SELECTIONβ puts the work area child below the Text area, slay πXmPLACE_TOPβ puts the work area child above the List area, and below a MenuBar if one is even in the building π
XmNdialogTypeβ okay so this one decides exactly which SelectionBox children get created and managed at initialization π. The possible values are:XmDIALOG_PROMPTβ every standard child gets created except the list and the list label, and everything except the Apply button gets managed πXmDIALOG_COMMANDβ only the list, the selection label, and the text field get created and managed π«ΆXmDIALOG_SELECTIONβ all standard children get created and managed β¨XmDIALOG_FILE_SELECTIONβ all standard children get created and managed (yes, literally the same energy, not a typo) πΈXmDIALOG_WORK_AREAβ all standard children get created, and all of them except the Apply button get managed π¦
If the parent of the SelectionBox is a DialogShell, the default is XmDIALOG_SELECTION; if it's not, the default is XmDIALOG_WORK_AREA. XmCreatePromptDialog and XmCreateSelectionDialog set this resource and append it to the creation arglist your application supplies. And bestie, listen β this resource cannot be modified after creation, so choose wisely at the door πͺ
XmNhelpLabelStringβ the string label for the Help button π. What the default actually is depends on your locale; in the C locale it'sHelp.
Fr fr, heads up: now that some default localized label strings come through message catalogs for the children of composite widgets, you can't set the labelString resources on the child through default resource files anymore. You have to use the resource that's provided at the parent level instead π«Ά
XmNlistItemsβ the items chillin' in the SelectionBox list π. Careful though:XtGetValueson this resource hands you back the list items themselves, not a copy of them. So the application must not free the returned items, periodt π ββοΈXmNlistItemCountβ how many items are in the SelectionBox list π’. The value must not be negative, bestie, that's not a vibe.XmNlistLabelStringβ the string label that sits above the SelectionBox list holding the selection items π·οΈ. Default depends on locale; in the C locale it'sItems, unlessXmNdialogTypeisXmDIALOG_PROMPTβ in that case the default isNULL.
Same PSA again, because it keeps coming up: since some default localized label strings are now delivered through message catalogs for the children of composite widgets, the labelString resources can't be set on the child through default resource files. Use the resource at the parent level instead π
XmNlistVisibleItemCountβ how many items actually show up in the SelectionBox list π. The value has to be greater than 0 (zero) unlessXmNdialogTypeisXmDIALOG_PROMPT; in that case the value is always 0. The default is dynamic, based on how tall the list is.XmNminimizeButtonsβ if it'sFalse, the buttons get set to the width of the widest button and the height of the tallest button. If it'sTrue, button width and height don't get modified at all πXmNmustMatchβ tells you whether the selection widget should check that what the user typed into the text edit field has an exact match somewhere in the SelectionBox list when the OK button gets activated π. No exact match +XmNmustMatchisTrue= theXmNnoMatchCallbackcallbacks fire. Exact match found, orXmNmustMatchisFalse= theXmNokCallbackcallbacks fire instead.XmNnoMatchCallbackβ the list of callbacks that get called when the user makes a selection from the text edit field that doesn't exactly match any of the items in the list box π. The callback reason isXmCR_NO_MATCH. And these only ever fire ifXmNmustMatchis true.XmNokCallbackβ the list of callbacks that get called when the user activates the OK button β . The callback reason isXmCR_OK. But if the selection text doesn't match a list item andXmNmustMatchisTrue, then theXmNnoMatchCallbackcallbacks get called instead.XmNokLabelStringβ the string label for the OK button π. Locale-dependent default; in the C locale it'sOK.
And one more time for the people in the back: now that some default localized label strings are provided through message catalogs for the children of composite widgets, labelString resources cannot be set on the child through default resource files. The resource provided at the parent level is what you use π
XmNselectionLabelStringβ the string label for the selection text edit field βοΈ. Default depends on locale; in the C locale it'sSelection.
Yep, same rule applies here too: because some default localized label strings come through message catalogs for the children of composite widgets, the labelString resources can't be set on the child through default resource files. Go through the resource provided at the parent level π
XmNtextAcceleratorsβ the translations added to the Text widget child of the SelectionBox β¨οΈ. The default includes bindings for the up and down keys, for auto selection of list items β¨. This resource gets ignored ifXmNacceleratorsis initialized to a nondefault value.XmNtextColumnsβ how many columns the Text widget has π. The value must be greater than 0 (zero).XmNtextStringβ the text sitting in the text edit selection field π.
π Inherited Resources π
SelectionBox inherits behavior and resources from its superclasses, and they're all laid out in the tables that follow π. For a full, complete description of each one of those resources, go read the reference page for that superclass β iykyk π
β¨ XmBulletinBoard Resource Set β¨
okay bestie, here's the whole XmBulletinBoard resource set β every single row, every single column, no skips. The columns are Name, Class, Type, Default, and Access. let's go π
XmNallowOverlapβ classXmCAllowOverlap, typeBoolean, defaultTrue, accessCSG. overlap said yes, periodt.XmNautoUnmanageβ classXmCAutoUnmanage, typeBoolean, defaultTrue, accessCG. auto-unmanage is true, iconic πXmNbuttonFontListβ classXmCButtonFontList, typeXmFontList, defaultdynamic, accessCSG. font list but make it button πXmNbuttonRenderTableβ classXmCButtonRenderTable, typeXmRenderTable, defaultdynamic, accessCSG. render table for buttons, slay β¨XmNcancelButtonβ classXmCWidget, typeWidget, defaultdynamic, accessSG. cancel button widget, so cute πXmNdefaultButtonβ classXmCWidget, typeWidget, defaultdynamic, accessSG. default button widget, main character energy πXmNdefaultPositionβ classXmCDefaultPosition, typeBoolean, defaultTrue, accessCSG. default position true, no capXmNdialogStyleβ classXmCDialogStyle, typeunsigned char, defaultdynamic, accessCSG. dialog style, unsigned char vibes πXmNdialogTitleβ classXmCDialogTitle, typeXmString, defaultNULL, accessCSG. title string or NULL, flexible queen πXmNfocusCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessC. focus callback list, NULL default fr frXmNlabelFontListβ classXmCLabelFontList, typeXmFontList, defaultdynamic, accessCSG. label font list, adorable πXmNlabelRenderTableβ classXmCLabelRenderTable, typeXmRenderTable, defaultdynamic, accessCSG. label render table, obsessed β¨XmNmapCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessC. map callback, NULL default πXmNmarginHeightβ classXmCMarginHeight, typeDimension, default10, accessCSG. margin height 10, periodtXmNmarginWidthβ classXmCMarginWidth, typeDimension, default10, accessCSG. margin width 10, twin πXmNnoResizeβ classXmCNoResize, typeBoolean, defaultFalse, accessCSG. no resize is false, lowkey wildXmNresizePolicyβ classXmCResizePolicy, typeunsigned char, defaultXmRESIZE_ANY, accessCSG. resize policy set toXmRESIZE_ANYπ₯XmNshadowTypeβ classXmCShadowType, typeunsigned char, defaultXmSHADOW_OUT, accessCSG. shadow type out, iconic πXmNtextFontListβ classXmCTextFontList, typeXmFontList, defaultdynamic, accessCSG. text font list, dynamic default πΈXmNtextRenderTableβ classXmCTextRenderTable, typeXmRenderTable, defaultdynamic, accessCSG. text render table, dynamic too π¦XmNtextTranslationsβ classXmCTranslations, typeXtTranslations, defaultNULL, accessC. text translations, NULL default πXmNunmapCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessC. unmap callback, NULL default π
and now we're deep in the inherited resource sets, bestie β XmManager first, then Composite. every single row is here, no cap, don't skip a one π
π XmManager Resource Set π
okay so this is the whole XmManager lineup. access codes are exactly what they are, don't try to be cute and change them:
XmNbottomShadowColorβ Class:XmCBottomShadowColor; Type:Pixel; Default:dynamic; Access:CSGXmNbottomShadowPixmapβ Class:XmCBottomShadowPixmap; Type:Pixmap; Default:XmUNSPECIFIED_PIXMAP; Access:CSGXmNforegroundβ Class:XmCForeground; Type:Pixel; Default:dynamic; Access:CSGXmNhelpCallbackβ Class:XmCCallback; Type:XtCallbackList; Default:NULL; Access:CXmNhighlightColorβ Class:XmCHighlightColor; Type:Pixel; Default:dynamic; Access:CSGXmNhighlightPixmapβ Class:XmCHighlightPixmap; Type:Pixmap; Default:dynamic; Access:CSGXmNinitialFocusβ Class:XmCInitialFocus; Type:Widget; Default:dynamic; Access:CSGXmNlayoutDirectionβ Class:XmCLayoutDirection; Type:XmDirection; Default:dynamic; Access:CGXmNnavigationTypeβ Class:XmCNavigationType; Type:XmNavigationType; Default:XmTAB_GROUP; Access:CSGXmNpopupHandlerCallbackβ Class:XmCCallback; Type:XtCallbackList; Default:NULL; Access:CXmNshadowThicknessβ Class:XmCShadowThickness; Type:Dimension; Default:dynamic; Access:CSGXmNstringDirectionβ Class:XmCStringDirection; Type:XmStringDirection; Default:dynamic; Access:CGXmNtopShadowColorβ Class:XmCTopShadowColor; Type:Pixel; Default:dynamic; Access:CSGXmNtopShadowPixmapβ Class:XmCTopShadowPixmap; Type:Pixmap; Default:dynamic; Access:CSGXmNtraversalOnβ Class:XmCTraversalOn; Type:Boolean; Default:True; Access:CSGXmNunitTypeβ Class:XmCUnitType; Type:unsigned char; Default:dynamic; Access:CSGXmNuserDataβ Class:XmCUserData; Type:XtPointer; Default:NULL; Access:CSG
π Composite Resource Set π
and here's the Composite set β tiny but iconic, fr fr:
XmNchildrenβ Class:XmCReadOnly; Type:WidgetList; Default:NULL; Access:GXmNinsertPositionβ Class:XmCInsertPosition; Type:XtOrderProc; Default:NULL; Access:CSGXmNnumChildrenβ Class:XmCReadOnly; Type:Cardinal; Default:0; Access:G
and that's the inherited resource vibe, but we're not done β more is coming, so stay with me π«Ά
okay so bestie, the Core Resource Set is literally the blueprint of this widget, and I'm about to give you every single resource, no cap π
XmNacceleratorsβ Class:XmCAccelerators, Type:XtAccelerators, Default:dynamic, Access:N/AXmNancestorSensitiveβ Class:XmCSensitive, Type:Boolean, Default:dynamic, Access:GXmNbackgroundβ Class:XmCBackground, Type:Pixel, Default:dynamic, Access:CSGXmNbackgroundPixmapβ Class:XmCPixmap, Type:Pixmap, Default:XmUNSPECIFIED_PIXMAP, Access:CSGXmNborderColorβ Class:XmCBorderColor, Type:Pixel, Default:XtDefaultForeground, Access:CSGXmNborderPixmapβ Class:XmCPixmap, Type:Pixmap, Default:XmUNSPECIFIED_PIXMAP, Access:CSGXmNborderWidthβ Class:XmCBorderWidth, Type:Dimension, Default:0, Access:CSGXmNcolormapβ Class:XmCColormap, Type:Colormap, Default:dynamic, Access:CGXmNdepthβ Class:XmCDepth, Type:int, Default:dynamic, Access:CGXmNdestroyCallbackβ Class:XmCCallback, Type:XtCallbackList, Default:NULL, Access:CXmNheightβ Class:XmCHeight, Type:Dimension, Default:dynamic, Access:CSGXmNinitialResourcesPersistentβ Class:XmCInitialResourcesPersistent, Type:Boolean, Default:True, Access:CXmNmappedWhenManagedβ Class:XmCMappedWhenManaged, Type:Boolean, Default:True, Access:CSGXmNscreenβ Class:XmCScreen, Type:Screen *, Default:dynamic, Access:CGXmNsensitiveβ Class:XmCSensitive, Type:Boolean, Default:True, Access:CSGXmNtranslationsβ Class:XmCTranslations, Type:XtTranslations, Default:dynamic, Access:CSGXmNwidthβ Class:XmCWidth, Type:Dimension, Default:dynamic, Access:CSGXmNxβ Class:XmCPosition, Type:Position, Default:0, Access:CSGXmNyβ Class:XmCPosition, Type:Position, Default:0, Access:CSG
π Callback Information π
A pointer to the following structure is passed to each callback:
typedef struct
{
int reason;
XEvent * event;
XmString value;
int length;
} XmSelectionBoxCallbackStruct;
reasonβ tells you why the callback got invoked, iykykeventβ points to theXEventthat triggered the callbackvalueβ theXmStringvalue the user picked from the SelectionBox list or typed into the SelectionBox text fieldlengthβ the size in bytes of theXmString value. This member is obsolete and exists for compatibility with earlier releases.
π Translations π
XmSelectionBox inherits translations from XmBulletinBoard. slay.
β¨ Accelerators β¨
The XmNtextAccelerators are added to the Text descendant of XmSelectionBox. The default accelerators are described in the following list.
The following key names are listed in the X standard key event translation table syntax. This format is the one used by Motif to specify the widget actions corresponding to a given key. A brief overview of the format is provided under VirtualBindings(3). For a complete description of the format, please refer to the X Toolkit Instrinsics Documentation.
:<Key><osfUp>:βSelectionBoxUpOrDown(Previous):<Key><osfDown>:βSelectionBoxUpOrDown(Next):<Key><osfBeginLine>:βSelectionBoxUpOrDown(First):<Key><osfEndLine>:βSelectionBoxUpOrDown(Last):<Key><osfRestore>:βSelectionBoxRestore()s c βΌm βΌa <Key>space:βSelectionBoxRestore()
β¨ Action Routines β¨
Bestie, these are the action routines that XmSelectionBox ships with. So slay. π
SelectionBoxUpOrDown(Previous|Next|First|Last)β okay so this one's a whole mood, depending on the argument you hand it:- call it with
Previous, or0(zero) for compatibility, and it selects the previous item in the list and replaces the text with that item. β¨ - call it with
Next, or1for compatibility, and it selects the next item in the list and replaces the text with that item. - call it with
First, or2for compatibility, and it selects the first item in the list and replaces the text with that item. π₯ - call it with
Last, or3for compatibility, and it selects the last item in the list and replaces the text with that item. π
- call it with
SelectionBoxRestore()β replaces the text value with the list selection. And if no item in the list is selected? It clears the text. Periodt. π§Ή
π Additional Behavior π
The SelectionBox widget also has this extra behavior, and it's lowkey iconic:
<Key><osfCancel>β calls the activate callbacks for the cancel button, but only if it's sensitive. If there's no cancel button and the parent of theSelectionBoxis a manager, it passes the event to the parent. π«Ά<Key><osfActivate>β calls the activate callbacks for the button with the keyboard focus. If no button has the keyboard focus, it calls the activate callbacks for the default button if it's sensitive.- In a
Listwidget or single-lineTextwidget, theListorTextaction associated with<Key><osfActivate>is called before theSelectionBoxactions associated with<Key><osfActivate>. π¦ - In a multiline
Textwidget, any<Key><osfActivate>event except<Key><osfEnter>calls theTextaction associated with<Key><osfActivate>, then theSelectionBoxactions associated with<Key><osfActivate>. - And if no button has the focus, no default button exists, and the parent of the
SelectionBoxis a manager, it passes the event to the parent. π
- In a
<OK Button Activated>β ifXmNmustMatchisTrueand the text does not match an item in the file list, it calls theXmNnoMatchCallbackcallbacks with reasonXmCR_NO_MATCH. Otherwise, it calls theXmNokCallbackcallbacks with reasonXmCR_OK. No cap. β<Apply Button Activated>β calls theXmNapplyCallbackcallbacks with reasonXmCR_APPLY. π<Cancel Button Activated>β calls theXmNcancelCallbackcallbacks with reasonXmCR_CANCEL. π<Help Button Activated>β calls theXmNhelpCallbackcallbacks with reasonXmCR_HELP. π<MapWindow>β calls the callbacks forXmNmapCallbackif theSelectionBoxis a child of aDialogshell. πΊοΈ<UnmapWindow>β calls the callbacks forXmNunmapCallbackif theSelectionBoxis the child of aDialogShell. π«οΈ
π Virtual Bindings π
The bindings for virtual keys are vendor specific, bestie β so don't come for me if yours hit different. For information about bindings for virtual buttons and keys, see VirtualBindings(3). iykyk π«
π RELATED π
The whole squad, fr fr:
Composite(3), Constraint(3), Core(3), XmBulletinBoard(3), XmCreateSelectionBox(3), XmCreateSelectionDialog(3), XmCreatePromptDialog(3), XmManager(3), and XmSelectionBoxGetChild(3). π«
And that's the whole page, bestie!! πβ¨ You made it to the bottom β main character energy fr. The little footer at the very end is stamped XmSelectionBox(library call) (that's the library-call source/version tag and its date, right there in the corner), so go forth and select some boxes. Slay, stay sensitive to your callbacks, and never let a <Key><osfCancel> catch you slipping. ππΈπ¦
π¦ where this page comes from
- arch rolling: openmotif 2.3.8-4 Β· LGPL-2.1-or-later
- centos-stream 9: motif-devel 2.3.4-32.el9 Β· LGPLv2+
- centos-stream 9: motif-devel 2.3.4-32.el9 Β· LGPLv2+
- epel 10: motif-devel 2.3.8-2.el10_2 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-1.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-1.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-2.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-2.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 44: motif-devel 2.3.8-3.fc44 Β· LicenseRef-Callaway-LGPLv2+
- fedora 44: motif-devel 2.3.8-3.fc44 Β· LicenseRef-Callaway-LGPLv2+
- nixos 26.05: motif 2.3.8
- nixpkgs unstable: motif 2.3.8
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms