XmTabStack(3X)
okay bestie, welcome to the XmTabStack(3X) manual page β and yes, we're about to deep-dive a whole widget class. no cap, it's lowkey iconic π
NAME π
XmTabStack β The TabStack widget class. periodt.
SYNOPSIS β¨
#include <Xm/TabStack.h>
DESCRIPTION π
The XmTabStack widget manages a group of widgets such that only one widget in the group is visible at a time. Each child is associated with a "tab" that displays a text label and/or a pixmap. By selecting the "tab" the user interactively determines which child is displayed. This widget exhibits behavior similar to the Microsoft Windows(TM) Tab Control.
The tabs can be configured to appear above, below, to the right, and to the left of a work area with the text oriented in any of the four cardinal directions. the range? iconic.
The TabStack allows the user to select, either by pointer or keyboard traversal, tabs. When a tab is selected it changes appearance so that it appears to be raised above the other tabs. When a tab is selected the child associated with the tab is made visible. One tab is selected at all times. main character tab energy, fr fr.
Classes π§
TabStack inherits behavior and resources form Core, Composite, Constraint, XmManager and XmBulletinBoard Classes.
The class pointer is xmTabStackWidgetClass.
The class name is XmTabStack.
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 or 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). iykyk.
XmTabStack Resource Set π
XmNfontList/XmCFontListβ Default:Dynamic; Type:XmFontList; Access:CSGXmNhighlightThickness/XmCHighlightThicknessβ Default:2; Type:Dimension; Access:CSGXmNstackedEffect/XmCStackedEffectβ Default:True; Type:Boolean; Access:CSGXmNtabAutoSelect/XmCTabAutoSelectβ Default:True; Type:Boolean; Access:CGXmNtabCornerPercent/XmCTabCornerPercentβ Default:40; Type:int; Access:CSGXmNtabLabelSpacing/XmCTabLabelSpacingβ Default:2; Type:Dimension; Access:CSGXmNtabMarginHeight/XmCTabMarginHeightβ Default:3; Type:Dimension; Access:CSGXmNtabMarginWidth/XmCTabMarginWidthβ Default:3; Type:Dimension; Access:CSGXmNtabMode/XmCTabModeβ Default:XmTABS_BASIC; Type:int; Access:CSGXmNtabOffset/XmCTabOffsetβ Default:10; Type:Dimension; Access:CSGXmNtabOrientation/XmCTabOrientationβ Default:Dynamic; Type:int; Access:CSGXmNtabSelectColor/XmCTabSelectColorβ Default:Dynamic; Type:Pixel; Access:CSGXmNtabSelectedCallback/XmCCallbackβ Default:NULL; Type:XtCallbackList; Access:CSXmNtabSelectPixmap/XmCTabSelectPixmapβ Default:XmUNSPECIFIED_PIXMAP; Type:Pixmap; Access:CSGXmNtabSide/XmCTabSideβ Default:XmTABS_ON_TOP; Type:int; Access:CSGXmNtabStyle/XmCTabStyleβ Default:XmTABS_BEVELED; Type:int; Access:CSGXmNuniformTabSize/XmCUniformTabSizeβ Default:True; Type:Boolean; Access:CSGXmNuseImageCache/XmCUseImageCacheβ Default:True; Type:Boolean; Access:CSG
XmNfontList π¨
Specifies the XmFontList to use when drawing the label strings for the tabs. literally the glow-up juice for your tab text, bestie.
XmNhighlightThickness β¨
Specifies the thickness of the rectangle drawn around the label string and label pixmap of the tab with keyboard traversal. keyboard traversal said βlemme shine.β
XmNstackedEffect ποΈ
Specifies if the visuals should depict a stack of folders, True, or if the XmTabStack should use all available space for its children, False. choose your fighter: folder stack realness or maximal space.
XmNtabAutoSelect π
Specifies if a tab is automatically selected when it receives keyboard traversal. auto-select said βI got you, bestie.β
XmNtabCornerPercent π
Specifies the percent of the font height that should be used for the corner visual. math but make it cute.
XmNtabLabelSpacing π«Ά
Specifies the amount of space to leave between a text label and a pixmap in the tab area. personal space, but for pixels.
XmNtabMarginHeight βοΈ
Specifies the vertical border that is placed around the label area of a tab. vertical breathing room.
XmNtabMarginWidth βοΈ
Specifies the horizontal border that is placed around the label area of a tab. horizontal breathing room.
XmNtabMode π§
Specifies the mode in which the XmTabStack distributes the tabs. Valid values for this resource include:
XmTABS_BASICβ Distributes the tabs in either a vertical or horizontal row and clips the tabs if there is not enough room to display all the tabs. clip clip, bestie.XmTABS_STACKEDβ Distributes the tabs in either a vertical or horizontal row. If there is not enough room to display all the tabs additional rows are added. When a tab is selected, its row is moved next to the children in the stack. it follows the selected tab like a loyal bestie.XmTABS_STACKED_STATICβ Distributes the tabs in either a vertical or horizontal row. If there is not enough room to display all the tabs additional rows are added. The positions of rows are not changed when tabs are selected. rows said βwe stay put.β
XmNtabOffset π
Specifies the amount of indentation used to stagger the tab rows when displaying tabs in either the XmTABS_STACKED or XmTABS_STACKED_STATIC mode. staggered like a cute little staircase.
XmNtabOrientation π
Specifies the orientation of the tab, and the rotation factor of the tab label. Valid values for this resource include:
XmTAB_ORIENTATION_DYNAMICβ Specifies that the orientation of the tabs should be calculated dynamically based on theXmNtabSideresource. dynamic, because why not.XmTABS_LEFT_TO_RIGHTβ Specifies that the text appears at the default rotation. classic L-to-R moment.XmTABS_RIGHT_TO_LEFTβ Specifies that the text appears upside down. flip it, reverse it, upside-down realness.
XmTABS_TOP_TO_BOTTOMβ text gets rotated to the vertical position, with the first character drawn at the lowest y position and the bottom of the text facing the lowest x position. πXmTABS_BOTTOM_TO_TOPβ text gets rotated to the vertical position, with the first character drawn at the highest y position and the bottom of the text facing the highest x position.
XmNtabSelectColorβ the color of the selected tab. πXmNtabSelectedCallbackβ the list of callbacks to call when a child becomes the selected tab.XmNtabSelectPixmapβ the pixmap of the selected tab. πXmNtabSideβ where the tab sits with respect to the children of theXmTabStack. Valid values for this resource include:XmTABS_ON_TOPβ tabs get placed above the children.XmTABS_ON_BOTTOMβ tabs get placed below the children.XmTABS_ON_RIGHTβ tabs get placed to the right of the children.XmTABS_ON_LEFTβ tabs get placed to the left of the children.
XmNtabStyleβ how the tabs associated with the children of theXmTabStackactually look. Valid values for this resource include:XmTABS_BEVELEDβ draws the corners of the tabs as an angled line.XmTABS_ROUNDEDβ draws the corners of the tabs as a quarter of a circle.XmTABS_SQUAREDβ draws the tabs as rectangles. no notes, it's just rectangles. π
XmNuniformTabSizeβ determines if all tabs should have a uniform major dimension, where the major dimension is width if the tab orientation isXmTABS_LEFT_TO_RIGHTorXmTABS_RIGHT_TO_LEFT, or height if the tab orientation isXmTABS_TOP_TO_BOTTOMorXmTABS_BOTTOM_TO_TOP. Heads up bestie: whenXmNtabModeis eitherXmTABS_STACKEDorXmTABS_STACKED_STATIC, this resource is forced toTrue. You don't get a vote. π«ΆXmNuseImageCacheβ determines if theXmImagesused for rotating text and pixmaps should be cached. This increases performance but uses up more memory. (The original spells it "Destermines" and honestly, same energy, but it means determines.) β‘
β¨ XmTabStack Constraint Resource Set β¨
Because a table would make your terminal cry, here's the whole resource set, one glow-up at a time. Class, type, default and access, all accounted for. π
XmNfreeTabPixmapβ classXmCFreeTabPixmap, typeBoolean, defaultFalse, accessCSG.XmNtabAlignmentβ classXmCAlignment, typeunsigned char, defaultXmALIGNMENT_CENTER, accessCSG.XmNtabBackgroundβ classXmCBackground, typePixel, defaultDynamic, accessCSG.XmNtabBackgroundPixmapβ classXmCBackgroundPixmap, typePixmap, defaultDynamic, accessCSG.XmNtabForegroundβ classXmCForeground, typePixel, defaultDynamic, accessCSG.XmNtabLabelPixmapβ classXmCTabLabelPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSG.XmNtabLabelStringβ classXmCTabLabelString, typeXmString, defaultNULL, accessCSG.XmNtabPixmapPlacementβ classXmCTabPixmapPlacement, typeXmPixmapPlacement, defaultXmPIXMAP_RIGHT, accessCSG.XmNtabStringDirectionβ classXmCTabStringDirection, typeunsigned char, defaultXmSTRING_DIRECTION_DEFAULT, accessCSG.
π XmNfreeTabPixmap
Says the pixmaps assigned to the XmNlabelPixmap resources should be freed when the widget is destroyed. Let it go, queen. π¦
π XmNtabAlignment
The alignment of the tab label. Valid values for this resource include:
XmALIGNMENT_BEGINNINGβ aligns the label to the left side of the available space.XmALIGNMENT_CENTERβ aligns the label centered in the available space.XmALIGNMENT_ENDβ aligns the label to the right side of the available space.
π XmNtabBackground
The background pixel for the tab. π¨
π XmNtabBackgroundPixmap
The background pixmap for the tab.
π XmNtabForeground
The foreground pixel for the tab.
π XmNtabLabelPixmap
The pixmap to display in the tab label. πΈ
π XmNtabLabelString
The XmString to display as the textual portion of the tab label. This gets copied when set on the widget. Important, don't skip this: the value you fetch via XtGetValues should not be freed, because it returns a pointer to the widget's own value. If you actually want to use the value returned from XtGetValues, run XmStringCopy on the returned value first. π
π XmNtabPixmapPlacement
Where the pixmap sits with respect to the text in the tab label. Valid values for this resource include:
XmPIXMAP_TOPβ pixmap goes above theXmString.XmPIXMAP_BOTTOMβ pixmap goes below theXmString.XmPIXMAP_RIGHTβ pixmap goes to the right of theXmString.XmPIXMAP_LEFTβ pixmap goes to the left of theXmString.XmPIXMAP_ONLYβ only the pixmap portion of the tab label gets displayed.XmPIXMAP_NONEβ only theXmStringportion of the tab label gets displayed.
π XmNtabStringDirection
The string direction for the XmString portion of the tab label. Valid values for this resouce include:
XmSTRING_DIRECTION_L_TO_Rβ left to rightXmSTRING_DIRECTION_R_TO_Lβ right to left
π Inherited Resources π
TabStack inherits behavior and resources from the following superclasses. For a complete description of each resource, refer to the man page for that superclass. iykyk, go read those too. π
XmBulletinBoard Resource Set
okay bestie, here's the whole lineup of resources this widget inherits from its XmBulletinBoard parent π every single one of them, name + class + type + default + access, no skips, no cuts.
XmNallowOverlapβ classXmCAllowOverlap, typeBoolean, defaultTrue, accessCSGXmNautoUnmanageβ classXmCAutoUnmanage, typeBoolean, defaultFalse, accessCGXmNbuttonFontListβ classXmCButtonFontList, typeXmFontList, defaultdynamic, accessCSGXmNcancelButtonβ classXmCWidget, typeWidget, defaultNULL, accessSGXmNdefaultButtonβ classXmCWidget, typeWidget, defaultNULL, accessSGXmNdefaultPositionβ classXmCDefaultPosition, typeBoolean, defaultTrue, accessCSGXmNdialogStyleβ classXmCDialogStyle, typeunsigned char, defaultdynamic, accessCSGXmNdialogTitleβ classXmCDialogTitle, typeXmString, defaultNULL, accessCSGXmNfocusCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCXmNlabelFontListβ classXmCLabelFontList, typeXmFontList, defaultdynamic, accessCSGXmNmapCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCXmNmarginHeightβ classXmCMarginHeight, typeDimension, default10, accessCSGXmNmarginWidthβ classXmCMarginWidth, typeDimension, default10, accessCSGXmNnoResizeβ classXmCNoResize, typeBoolean, defaultFalse, accessCSG
XmManager Resource Set
and THEN π¦ because this widget is also an XmManager deep down, it picks up this whole second stack of resources too. same deal β every last one:
XmNbottomShadowColorβ classXmCBottomShadowColor, typePixel, defaultdynamic, accessCSGXmNbottomShadowPixmapβ classXmCBottomShadowPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSGXmNforegroundβ classXmCForeground, typePixel, defaultdynamic, accessCSGXmNhelpCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCXmNhighlightColorβ classXmCHighlightColor, typePixel, defaultdynamic, accessCSGXmNhighlightPixmapβ classXmCHighlightPixmap, typePixmap, defaultdynamic, accessCSGXmNinitialFocusβ classXmCInitialFocus, typeWidget, defaultdynamic, accessCSGXmNnavigationTypeβ classXmCNavigationType, typeXmNavigationType, defaultXmTAB_GROUP, accessCSGXmNshadowThicknessβ classXmCShadowThickness, typeDimension, default2, accessCSGXmNstringDirectionβ classXmCStringDirection, typeXmStringDirection, defaultdynamic, accessCGXmNtopShadowColorβ classXmCTopShadowColor, typePixel, defaultdynamic, accessCSGXmNtopShadowPixmapβ classXmCTopShadowPixmap, typePixmap, defaultdynamic, accessCSGXmNtraversalOnβ classXmCTraversalOn, typeBoolean, defaultTrue, accessCSGXmNunitTypeβ classXmCUnitType, typeunsigned char, defaultdynamic, accessCSGXmNuserDataβ classXmCUserData, typeXtPointer, defaultNULL, accessCSG
that's the full inheritance situation, bestie β nothing left out, every default and every access code exactly as it came π
π Composite Resource Set π
okay bestie, here's the receipt on what you can actually set on this thing π§Ύ
XmNchildrenβ classXmCReadOnly, typeWidgetList, defaultNULL, accessGXmNinsertPositionβ classXmCInsertPosition, typeXtOrderProc, defaultNULL, accessCSGXmNnumChildrenβ classXmCReadOnly, typeCardinal, default0, accessG
π Core Resource Set π
the inherited classic lineup, every single one, no skips β¨
XmNacceleratorsβ classXmCAccelerators, typeXtAccelerators, defaultdynamic, accessN/AXmNancestorSensitiveβ 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, defaultScreen*, accessdynamicXmNsensitiveβ classXmCSensitive, typeBoolean, defaultTrue, accessCSGXmNtranslationsβ classXmCTranslations, typeXtTranslations, defaultdynamic, accessCSGXmNwidthβ classXmCWidth, typeDimension, defaultdynamic, accessCSGXmNxβ classXmCPosition, typePosition, default0, accessCSGXmNyβ classXmCPosition, typePosition, default0, accessCSG
π Calback Information π
(yes, it's spelled like that in the original, and honestly? iconic of it. moving on π)
a pointer to this exact struct gets passed to every callback, so clock it:
typedef struct _XmTabStackCallbackStruct {
intreason;
XEvent*event;
Widgetselected_child;
} XmTabStackCallbackStruct;
reasonβ tells you why the callback got invoked in the first place. the valid callback reasons include:XmCR_TAB_SELECTEDβ means a child has been made the selected widget. slay π
eventβ points to theXEventthat triggered the callback.selected_childβ holds the widget ID of the selected child.
π¦ Translations π¦
XmTabStack includes the translations from the XmManager. that's it, that's the whole vibe.
πΈ Additional Behavior πΈ
the XmTabStack has no additional behavior. bestie there is genuinely nothing extra here. that's the entire tea π΅
π Virtual Bindings π
the bindings for virtual keys are vendor specific. for the info about bindings for virtual buttons and keys, go read VirtualBindings(3X). iykyk π«Ά
π RELATED INFORMATION π
XmBulletinBoard(3)Composite(3)Constraint(3)Core(3)XmCreateTabStack(3)XmManager(3)XmVaCreateTabStack(3)XmVaCreateManagedTabStack(3)
and that's a wrap on XmTabStack(3X) π you read the whole thing, main character behavior fr fr. no cap, you ate. periodt. β¨
π¦ 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