XMCOMBOBOX(3)
yo bestie, welcome to XmComboBox from the library call manual π this one is giving βtext field plus listβ energy, and weβre gonna unpack it fr fr.
β¨ NAME β¨
XmComboBox β the ComboBox widget class. thatβs the name, thatβs the vibe, periodt π
π SYNOPSIS π
#include <Xm/ComboBox.h>
π¦ DESCRIPTION π¦
Okay so XmComboBox combines the capabilities of a single-line TextField widget and a List widget. It lets users do operations like typing and pasting information, and it also gives them a list of possible choices they can select from to complete the TextField entry field. The list can either be displayed at all times or can be dropped down by the user. When the list portion of the ComboBox is hidden, users get a visual cue β a downward-pointing arrow β next to the TextField field. The position of the arrow relative to the TextField field depends on the XmNlayoutDirection resource of the widget. This version of the ComboBox is called the "drop-down" ComboBox. Drop-down ComboBoxes are useful when screen space is limited, or when users will complete the text entry field more often by typing text than by selecting the entry field text from the list. The user can access the drop-down ComboBox in either one of two ways:
- By clicking and releasing
<Btn1>on the downward-pointing arrow, which pops the list up, and the list stays up. A later selection of an item in the list will cause the item to appear in the text entry field, and the list will unpost itself. - By pressing
<Btn1>on the downward-pointing arrow, dragging it to a list item, and then releasing it there, which selects that item. The list disappears, and the selected item appears in the text entry field.
The application provides an array of strings that fill the list. At creation time, string items can be passed to the ComboBox via an arglist. Each string becomes an item in the list, with the first string becoming the item in position 1, the second string becoming the item in position 2, and so on. The size of the list is set by specifying the number of items that are visible in the list (XmNvisibleItemCount). If the number of items in the list exceeds the number of items that are visible, a vertical scroll bar will automatically appear that allows the user to scroll through a large number of items.
ComboBox creates two child widgets: a TextField widget for entering text and a ScrolledWindow containing a List for the list of items. The name of the items list itself is List, and the name of the TextField is Text. The application or user can specify resource values for these widgets in a resource file, and the application can use XtNameToWidget (specifying "*List" for the items list or "*Text" for the TextField widget) to obtain the widget IDs of the descendant widgets. At creation time, ComboBox passes appropriate resource values in the creation arglist, including XmNitems, to the items list. Note that the result of providing the XmNdestroyCallback resource in the creation arglist is unspecified. The application should use the XtAddCallback function to add callbacks to the appropriate widget (TextField or List) after creating it.
bestie, thatXmNdestroyCallbackin the creation arglist thing? unspecified. do not play with it. useXtAddCallbackafter creation instead, okay? π«Ά
ComboBox forces the following resource values on its List child:
- If
XmNcomboBoxTypeisXmCOMBO_BOX,XmNtraversalOnis forced toFalse. XmNhighlightThicknessis forced to2in a drop-down ComboBox and to0in other types of ComboBoxes.XmNborderWidthis forced to0.XmNnavigationTypeis forced toXmNONE.XmNselectionPolicyis forced toXmBROWSE_SELECT.XmNlistSizePolicyis forced toXmVARIABLE.XmNspacingis forced to0.XmNvisualPolicyis forced toXmVARIABLE.XmNselectedPositionsis forced toNULL.XmNselectedPositionsCountis forced to0.
When XmNcomboBoxType is XmDROP_DOWN_LIST, ComboBox forces the following resource values on its TextField child:
XmNeditableis forced toFalse.XmNcursorPositionVisibleis forced toFalse.XmNshadowThicknessis forced to0.
By contrast, when XmNcomboBoxType is XmCOMBO_BOX or XmDROP_DOWN_COMBO_BOX, ComboBox forces the following resource values on its TextField child:
XmNeditableis forced toTrue.XmNcursorPositionVisibleis forced toTrue.XmNeditModeis forced toXmSINGLE_LINE_EDIT.
ComboBox always forces the values of the following resources on the TextField:
XmNnavigationTypeis forced toXmNONE.XmNhighlightThicknessis forced to0.XmNborderWidthis forced to0.
ComboBox allows a single item to be selected in two ways: by selecting the desired item from the List or by entering text into the TextField. ComboBox does not automatically select a list item if the user types that string into the TextField. It selects the item when the user presses KActivate or moves the focus. ComboBox supports the Browse Select selection model of List (see the XmList reference page for a description of this model), so selections are mutually exclusive. Selecting an item from the list causes that item to be displayed in the TextField portion of the ComboBox. If an application sets the XmNvalue resource of TextField, that string is shown in the TextField. If the application has not provided any list items, or if there is no current selection, the TextField is empty.
The TextField in the ComboBox widget can be either editable or noneditable, depending on the value of the XmNcomboBoxType resource.
If the TextField is editable, the user can type into it. When the user presses the Return key, the ComboBox will compare the typed entry to the items in the List. If there is an exact match, then the matched List item is selected. If the application wishes to validate the entered text (for example, to ensure that the typed selection is a valid one), it can do so by setting XmNmodifyVerifyCallback on the TextField widget.
If the TextField is noneditable, typing text may invoke a matching algorithm that will attempt to match the entered text with items in the list. The specific matching algorithm applied, which may be none, is determined by the value of the XmNmatchBehavior resource in ComboBox, which can be either XmNONE or XmQUICK_NAVIGATE. A value of XmNONE indicates that no matching algorithm will occur. A value of XmQUICK_NAVIGATE indicates that when the List widget has focus, one-character navigation is supported. In this algorithm, if the typed character is the initial character of some item in the List, this algorithm causes that item to be navigated to and selected, and the item is displayed in the TextField. Subsequently typing the same character will cycle among the items with the same first character.
Regardless of the selection mechanism used (either selected directly from the List or typed into the TextField), when an item in the List is selected, that item is highlighted in the List. In addition, the selected item is displayed in the TextField of the ComboBox. If the user performs an action that would move focus away from ComboBox, or selects a List item, the XmNselectionCallback callbacks are invoked to notify the application of the current contents of the TextField (or choice). The application then takes whatever action is required based on those contents (or choice).
ComboBox uses the XmQTspecifyRenderTable trait and holds the XmQTaccessTextual trait.
π Classes π
XmComboBox inherits behavior, resources, and traits from Core, Composite, and XmManager classes.
The class pointer is xmComboBoxWidgetClass.
The class name is XmComboBox.
β¨ New Resources β¨
okay bestie, the following table defines a set of widget resources used by the programmer to specify data. You 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 at creation time (C), set by using XtSetValues (S), retrieved by using XtGetValues (G), or is not applicable (N/A). π
Here's the XmComboBox Resource Set β every single one, no skips:
XmNarrowSizeβ Class:XmCArrowSizeΒ· Type:DimensionΒ· Default:dynamicΒ· Access:CSGXmNarrowSpacingβ Class:XmCArrowSpacingΒ· Type:DimensionΒ· Default:dynamicΒ· Access:CSGXmNcolumnsβ Class:XmCColumnΒ· Type:shortΒ· Default:dynamicΒ· Access:CSGXmNcomboBoxTypeβ Class:XmCComboBoxTypeΒ· Type:unsigned charΒ· Default:XmCOMBO_BOXΒ· Access:CGXmNfontListβ Class:XmCFontListΒ· Type:XmFontListΒ· Default:NULLΒ· Access:CSGXmNhighlightThicknessβ Class:XmCHighlightThicknessΒ· Type:DimensionΒ· Default:2Β· Access:CSGXmNitemCountβ Class:XmCItemCountΒ· Type:intΒ· Default:dynamicΒ· Access:CSGXmNitemsβ Class:XmCItemsΒ· Type:XmStringTableΒ· Default:dynamicΒ· Access:CSGXmNlistβ Class:XmCListΒ· Type:WidgetΒ· Default:dynamicΒ· Access:GXmNmarginHeightβ Class:XmCMarginHeightΒ· Type:DimensionΒ· Default:2Β· Access:CSGXmNmarginWidthβ Class:XmCMarginWidthΒ· Type:DimensionΒ· Default:2Β· Access:CSGXmNmatchBehaviorβ Class:XmCMatchBehaviorΒ· Type:unsigned charΒ· Default:dynamicΒ· Access:CSGXmNpositionModeβ Class:XmCPositionModeΒ· Type:XtEnumΒ· Default:XmZERO_BASEDΒ· Access:CGXmNrenderTableβ Class:XmCRenderTableΒ· Type:XmRenderTableΒ· Default:dynamicΒ· Access:CSGXmNselectedItemβ Class:XmCSelectedItemΒ· Type:XmStringΒ· Default:NULLΒ· Access:CSGXmNselectedPositionβ Class:XmCSelectedPositionΒ· Type:intΒ· Default:dynamicΒ· Access:CSGXmNselectionCallbackβ Class:XmCCallbackΒ· Type:XmCallbackListΒ· Default:NULLΒ· Access:CXmtextFieldβ Class:XmCTextFieldΒ· Type:WidgetΒ· Default:dynamicΒ· Access:GXmNvisibleItemCountβ Class:XmCVisibleItemCountΒ· Type:intΒ· Default:10Β· Access:CSG
XmNarrowSize
Specifies the width of the arrow. The default size depends on the size of the text, as well as the size of the ComboBox. It's giving "I scale with the vibes" energy. π
XmNarrowSpacing
Specifies the space between the text and arrow visual in pixels. The default value is obtained from the XmNmarginWidth resource. So it lowkey inherits the margin vibe. β¨
XmNcolumns
Specifies the number of columns in the text field. If unset, the text field's value is used. Refer to the XmTextField man page for more detailed information. Go read that one if you want the full tea. π
XmNcomboBoxType
Specifies the type of ComboBox to be created. This can be one of the following:
XmCOMBO_BOXβ Generates a ComboBox where the list is always displayed, and the text entry field is editable.XmDROP_DOWN_COMBO_BOXβ Generates a ComboBox where the list is hidden unless specifically requested, and the text entry field is editable.XmDROP_DOWN_LISTβ Generates a ComboBox where the list is hidden unless specifically requested, and the text entry field is noneditable.
Pick your fighter wisely, bestie. π
XmNfontList
Specifies the fontlist associated with XmComboBox. The fontlist is an obsolete construct, and has been superseded by the render table. It is included for compatibility with earlier versions of Motif, and for applications that do not easily support render tables. The default fontlist is derived from the default render table, and if both a fontlist and a render table are specified, the render table takes precedence. So likeβ¦ the render table ate and left no crumbs. Periodt. π
XmNhighlightThickness
Specifies the thickness of the highlighting rectangle. That's literally it. Simple. Clean. Iconic. β¨
XmNitemCount
Specifies the number of items in the list. If unset, the lists's value is used. Refer to the XmList man page for more detailed information. Yes, "lists's" β we don't make the rules, we just keep every detail. π
XmNitems
Specifies the items in the list. If unset, the lists's value is used. Refer to the XmList man page for more detailed information. Again with the list's value β it's a whole thing. π¦
XmNlist
The list widget. Justβ¦ the list widget. Main character energy right there. π
XmNmarginWidth
Specifies the horizontal spacing between the child widgets and the boundary of the ComboBox. Give those widgets some room to breathe, bestie. πΈ
XmNmarginHeightβ how much vertical breathing room sits between the child widgets and the edges of the ComboBox π« lowkey the personal space of your widget.XmNmatchBehaviorβ bestie, this is the whole matching algorithm, the ~vibe check~ that decides how the text you typed into the TextField field gets matched against the items in the list. Current values areXmNONEandXmQUICK_NAVIGATE, like so:XmNONEβ there's literally no matching algorithm assigned. That's it. That's the whole personality.XmQUICK_NAVIGATEβ only valid for noneditable ComboBoxes (aka theXmNcomboBoxTyperesource valueXmDROP_DOWN_LIST). This algorithm supports 1-character navigation when the List widget has focus π― If the character you typed is the initial character of some item in the List, this algorithm causes that item to be navigated to and selected. And then? Typing that same character again will cycle among the items with the same first character. it's giving keyboard shortcuts, fr fr π
XmNpositionModeβ controls how the value of theXmNselectedPositionresource and theitem_positionfield of the callback structure are gonna be interpreted. Heads up tho: the convenience functionsXmComboBoxDeletePosandXmComboBoxAddItemare not affected by this resource, and (just likeXmList) they always use 1-based positions. periodt. Valid values for this resource are:XmZERO_BASEDβ (DtComboBox compatibility mode: default)XmNselectedPositionis in[0,itemcount-1]. Theitem_positionin theXmComboBoxCallbackStructis 0 if the first element in the list was selected. And ngl, plot twist: 0 is also returned if no element in the list was selected (that is, a new item was entered in the text field). yeah. ambiguous. we know. πXmONE_BASEDβ (Motif mode) Both the resource value and the callback fields are 1-based. This is consistent with other Motif widgets, so if you're a Motif girlie this is your home turf π
XmNrenderTableβ the render table associated with the ComboBox β¨ This render table is used in both the TextField field and the List in the ComboBox. It's used in conjunction with theXmNvisibleItemCountresource of the List to determine the height of the ComboBox widget. And if this value isNULLat initialization, and if the widget parent isXmBulletinBoardor its subclasses,VendorShellor its subclasses, orXmMenuShell, then the widget parent provides the default render table associated with the widget π«Ά Also: if both a render table and a fontlist are specified, the render table will take precedence. sorry fontlist, she ate and you didn't πXmNselectedItemβ a compound string that represents the current selection of the ComboBox. The selected item is the content of the ComboBox text entry field. literally the main character of the text box πXmNselectedPositionβ if the selection in the ComboBox is an item in the list, this is the index of the selected item in the list. If no item in the list is selected, this is0. no item, no index, just vibes and a zero πXmNselectionCallbackβ the list of callbacks called when an item is selected π Thereasonfield in theXmComboBoxCallbackStructisXmCR_SELECT.XmNtextFieldβ the text field widget. yeah that's it, that's the whole description, she's short and she's iconic π¦XmNvisibleItemCountβ the number of visible items in the list π This will override any value specified for the list, so don't even try it. Refer to theXmListman page for more detailed information.
β¨ Inherited Resources β¨
okay bestie so ComboBox is not doing all this alone β it's inheriting behavior and resources from its superclasses, like a nepo baby but make it useful π . The tables below are the full tea. And fr, if you want the complete description of any single resource, go read the reference page for the superclass it came from, periodt.
π XmManager Resource Set π
XmNbottomShadowColorβ classXmCBottomShadowColor, typePixel, default dynamic, accessCSGXmNbottomShadowPixmapβ classXmCBottomShadowPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSGXmNforegroundβ classXmCForeground, typePixel, default dynamic, accessCSGXmNhelpCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCXmNhighlightColorβ classXmCHighlightColor, typePixel, default dynamic, accessCSGXmNhighlightPixmapβ classXmCHighlightPixmap, typePixmap, default dynamic, accessCSGXmNinitialFocusβ classXmCInitialFocus, typeWidget, defaultNULL, accessCSGXmNlayoutDirectionβ classXmCLayoutDirection, typeXmDirection, default dynamic, accessCGXmNnavigationTypeβ classXmCNavigationType, typeXmNavigationType, defaultXmSTICKY_TAG_GROUP, accessCSGXmNpopupHandlerCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCXmNshadowThicknessβ classXmCShadowThickness, typeDimension, default2, accessCSGXmNstringDirectionβ classXmCStringDirection, typeXmStringDirection, default dynamic, accessCGXmNtopShadowColorβ classXmCTopShadowColor, typePixel, default dynamic, accessCSGXmNtopShadowPixmapβ classXmCTopShadowPixmap, typePixmap, default dynamic, accessCSGXmNtraversalOnβ classXmCTraversalOn, typeBoolean, defaultTrue, accessCSGXmNunitTypeβ classXmCUnitType, typeunsigned char, default dynamic, accessCSGXmNuserDataβ classXmCUserData, typeXtPointer, defaultNULL, accessCSG
π¦ Composite Resource Set π¦
XmNchildrenβ classXmCReadOnly, typeWidgetList, defaultNULL, accessGXmNinsertPositionβ classXmCInsertPosition, typeXtOrderProc, defaultNULL, accessCSGXmNnumChildrenβ classXmCReadOnly, typeCardinal, default0, accessG
π Core Resource Set π
XmNacceleratorsβ classXmCAccelerators, typeXtAccelerators, default dynamic, accessCSG
...and the inherited resource train keeps rolling, bestie, hop back on π
XmNancestorSensitiveβ classXmCSensitive, typeBoolean, defaultdynamic, accessGXmNbackgroundβ classXmCBackground, typePixel, defaultdynamic, accessCSGXmNbackgroundPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSGXmNborderColorβ classXmCBorderColor, typePixel, defaultXtDefaultForeground, accessCSGXmNborderPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSGXmNborderWidthβ classXmCBorderWidth, typeDimension, default0, accessCSGXmNcolormapβ classXmCColormap, typeColormap, defaultdynamic, accessCGXmNdepthβ classXmCDepth, typeint, defaultdynamic, accessCGXmNdestroyCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCXmNheightβ classXmCHeight, typeDimension, defaultdynamic, accessCSGXmNinitialResourcesPersistentβ classXmCInitialResourcesPersistent, typeBoolean, defaultTrue, accessCXmNmappedWhenManagedβ classXmCMappedWhenManaged, typeBoolean, defaultTrue, accessCSGXmNscreenβ classXmCScreen, typeScreen *, defaultdynamic, accessCGXmNsensitiveβ classXmCSensitive, typeBoolean, defaultTrue, accessCSGXmNtranslationsβ classXmCTranslations, typeXtTranslations, defaultdynamic, accessCSGXmNwidthβ classXmCWidth, typeDimension, defaultdynamic, accessCSGXmNxβ classXmCPosition, typePosition, default0, accessCSGXmNyβ classXmCPosition, typePosition, default0, accessCSG
that's the whole inherited lineup, and honestly? iconic. every single one. π
π Callback Information π
okay so when a callback fires, you don't just get vibes β you get a whole struct, and here's exactly what's inside it:
A pointer to the following structure is passed to each callback. The callback structure is defined as follows:
typedef struct
{
int reason;
XEvent *event;
XmString item_or_text;
int item_position;
} XmComboBoxCallbackStruct;
reasonβ tells you why the callback got invoked. The whole "who invited you here" of it all.eventβ points to theXEventthat triggered the callback. It can beNULL, so pls don't assume it's always there, bestie. πitem_or_textβ the contents of the text field at the time the event caused the callback.
β οΈ heads up fr fr:item_or_textpoints to a temporary storage space that gets reused after the callback is finished. So if your application needs to save the item, you have to copyitem_or_textinto its own data space. Do not just hold onto the pointer and expect it to still be there later, because it will NOT be there later. π
item_positionβ the position of item in the list'sXmNitems1-based array. And if this is0? That means theitem_or_textwas not selected from the List. Zero literally means "not from the List," no cap. π
β¨ Translations β¨
The ComboBox translations are listed below.
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.
Note: theKPageUpandKPageDowntranslations do not take effect unless the List child widget is posted. Like, they're just out here doing nothing until that List is posted. π«
<Btn1Down>:
CBArmAndDropDownList()
<Btn1Up>: CBDisarm()
The following lists the List translations in the drop-down list. When ComboBox XmNcomboBoxType is XmDROP_DOWN_LIST, <osfActivate>, <osfCancel>, and Return are overriden by ComboBox actions.
:c <Key><osfDown>:βCBDropDownList():c <Key><osfUp>:βCBDropDownList():<Key><osfCancel>:βCBCancel():<Key><osfActivate>:βCBActivate()βΌs βΌm βΌa<Key>Return:βCBActivate()
that Return one is doing the most and honestly? respect. π
π« Accelerators π«
The following accelerators are added to ComboBox and its children. The accelerators may not directly correspond to a translation table. If the translation is not listed below, it may depend on the context of the event.
and yes bestie, that "it depends on the context" line is doing a lot of heavy lifting, but it's the truth β some of these only show up depending on what's going on when the event lands. π¦
Okay so here's the rest of the key bindings, bestie. These are the ones for the drop-down list and stuff:
:c <Key><osfUp>:
CBDropDownList()
:<Key><osfUp>:
CBListAction(Up)
:c <Key><osfDown>:
CBDropDownList()
:<Key><osfDown>:
CBListAction(Down)
:c <Key><osfBeginLine>:
CBListAction(ListBeginData)
:c <Key><osfEndLine>:
CBListAction(ListEndData)
:<Key><osfPageUp>:
CBListAction(ListPrevPage)
:<Key><osfPageDown>:
CBListAction(ListNextPage)
Oh and btw, a drop-down ComboBox also adds accelerators to its List child. Aside from the ones we just listed, those accelerators are literally the default TextField key translations. π
β¨ Action Routines β¨
The XmComboBox action routines are as follows, and yes, we're going through every single one:
CBActivate()β Calls theXmNselectionCallbackcallbacks. If theXmNcomboBoxTypeisXmDROP_DOWN_COMBO_BOXorXmDROP_DOWN_LIST, it unposts the list. If the parent is a manager, passes the event to the parent. Slay. πCBArmAndDropDownList()β If the pointer is within the down arrow, draws the shadow of the arrow in the selected state, and then posts the list. So dramatic. β¨CBCancel()β If theXmNcomboBoxTypeisXmDROP_DOWN_COMBO_BOXorXmDROP_DOWN_LIST, pops down the list. If the parent is a manager, passes the event to the parent. πCBDisarm()β Redraws the arrow in an unselected state. Simple. Clean. Iconic. π¦CBDropDownList()β IfXmNcomboBoxTypeisXmDROP_DOWNorXmDROP_DOWN_LIST, and list is not displayed, posts the list. If list is displayed, it unposts the list. Toggle queen. πCBListAction(ListBeginData)β Moves the location cursor to the first item in the list. In Normal Mode, this also deselects any current selection, selects the first item in the list, and calls theXmNbrowseSelectionCallbackselection callback. Main character energy fr fr. πCBListAction(ListEndData)β Moves the location cursor to the last item in the list. In Normal Mode, this also deselects any current selection, selects the last item in the list, and calls theXmNbrowseSelectionCallbackselection callback. End of the line, bestie. πCBListAction(ListPrevPage)β Scrolls the list to the previous page, moving the location cursor to a new item. This action also selects the new item, deselects any current selection, and calls theXmNbrowseSelectionCallbackcallbacks. If the ComboBox is not a drop-down type, then this action does nothing. No drop-down? No service. πCBListAction(ListNextPage)β Scrolls the list to the next page, moving the location cursor to a new item. This action also selects the new item, deselects any current selection, and calls theXmNbrowseSelectionCallbackcallbacks. If the ComboBox is not a drop-down type, then this action does nothing. Same energy as above. πCBListAction(Up)β Moves the location cursor to the previous item in the list. This action also selects the previous item, deselects any current selection, and calls theXmNbrowseSelectionCallbackcallbacks. Note that, unlike the List ListPrevItem action, this action wraps around. So it's giving circular. πCBListAction(Down)β Moves the location cursor to the next item in the list. This action also selects the next item, deselects any current selection, and calls theXmNbrowseSelectionCallbackcallbacks. Note that, unlike the List ListNextItem action, this action wraps around. Also circular. π₯
π¦ Virtual Bindings π¦
The bindings for virtual keys are vendor specific, so like, check your vendor. For info about bindings for virtual buttons and keys, see VirtualBindings(3). Periodt. π
π¨ ERRORS/WARNINGS π¨
The toolkit will literally display a warning if the application tries to set the value of XmNlist or the XmNtextField resource, which are read-only (marked G in the resource table). So don't do that. It's not the vibe. π«
π RELATED π
Composite(3)Core(3)XmCreateComboBox(3)XmList(3)XmManager(3)XmTextField(3)XmVaCreateComboBox(3)XmVaCreateManagedComboBox(3)
And that's a wrap on the XmComboBox(library call) page! The date is whatever the man page says, but you know the vibe. Byeee bestie, stay slaying those ComboBoxes πβ¨π¦
π¦ 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