XmTabStack(3X)

πŸ“¦
version 2.3.8 Β· 3 versions
, in arch rolling, centos-stream 9, epel 10, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0

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: CSG
  • XmNhighlightThickness / XmCHighlightThickness β€” Default: 2; Type: Dimension; Access: CSG
  • XmNstackedEffect / XmCStackedEffect β€” Default: True; Type: Boolean; Access: CSG
  • XmNtabAutoSelect / XmCTabAutoSelect β€” Default: True; Type: Boolean; Access: CG
  • XmNtabCornerPercent / XmCTabCornerPercent β€” Default: 40; Type: int; Access: CSG
  • XmNtabLabelSpacing / XmCTabLabelSpacing β€” Default: 2; Type: Dimension; Access: CSG
  • XmNtabMarginHeight / XmCTabMarginHeight β€” Default: 3; Type: Dimension; Access: CSG
  • XmNtabMarginWidth / XmCTabMarginWidth β€” Default: 3; Type: Dimension; Access: CSG
  • XmNtabMode / XmCTabMode β€” Default: XmTABS_BASIC; Type: int; Access: CSG
  • XmNtabOffset / XmCTabOffset β€” Default: 10; Type: Dimension; Access: CSG
  • XmNtabOrientation / XmCTabOrientation β€” Default: Dynamic; Type: int; Access: CSG
  • XmNtabSelectColor / XmCTabSelectColor β€” Default: Dynamic; Type: Pixel; Access: CSG
  • XmNtabSelectedCallback / XmCCallback β€” Default: NULL; Type: XtCallbackList; Access: CS
  • XmNtabSelectPixmap / XmCTabSelectPixmap β€” Default: XmUNSPECIFIED_PIXMAP; Type: Pixmap; Access: CSG
  • XmNtabSide / XmCTabSide β€” Default: XmTABS_ON_TOP; Type: int; Access: CSG
  • XmNtabStyle / XmCTabStyle β€” Default: XmTABS_BEVELED; Type: int; Access: CSG
  • XmNuniformTabSize / XmCUniformTabSize β€” Default: True; Type: Boolean; Access: CSG
  • XmNuseImageCache / 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 the XmNtabSide resource. 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 the XmTabStack. 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 the XmTabStack actually 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 is XmTABS_LEFT_TO_RIGHT or XmTABS_RIGHT_TO_LEFT, or height if the tab orientation is XmTABS_TOP_TO_BOTTOM or XmTABS_BOTTOM_TO_TOP. Heads up bestie: when XmNtabMode is either XmTABS_STACKED or XmTABS_STACKED_STATIC, this resource is forced to True. You don't get a vote. 🫢
  • XmNuseImageCache β€” determines if the XmImages used 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 β€” class XmCFreeTabPixmap, type Boolean, default False, access CSG.
  • XmNtabAlignment β€” class XmCAlignment, type unsigned char, default XmALIGNMENT_CENTER, access CSG.
  • XmNtabBackground β€” class XmCBackground, type Pixel, default Dynamic, access CSG.
  • XmNtabBackgroundPixmap β€” class XmCBackgroundPixmap, type Pixmap, default Dynamic, access CSG.
  • XmNtabForeground β€” class XmCForeground, type Pixel, default Dynamic, access CSG.
  • XmNtabLabelPixmap β€” class XmCTabLabelPixmap, type Pixmap, default XmUNSPECIFIED_PIXMAP, access CSG.
  • XmNtabLabelString β€” class XmCTabLabelString, type XmString, default NULL, access CSG.
  • XmNtabPixmapPlacement β€” class XmCTabPixmapPlacement, type XmPixmapPlacement, default XmPIXMAP_RIGHT, access CSG.
  • XmNtabStringDirection β€” class XmCTabStringDirection, type unsigned char, default XmSTRING_DIRECTION_DEFAULT, access CSG.

πŸ’œ 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 the XmString.
  • XmPIXMAP_BOTTOM β€” pixmap goes below the XmString.
  • XmPIXMAP_RIGHT β€” pixmap goes to the right of the XmString.
  • XmPIXMAP_LEFT β€” pixmap goes to the left of the XmString.
  • XmPIXMAP_ONLY β€” only the pixmap portion of the tab label gets displayed.
  • XmPIXMAP_NONE β€” only the XmString portion 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 right
  • XmSTRING_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 β€” class XmCAllowOverlap, type Boolean, default True, access CSG
  • XmNautoUnmanage β€” class XmCAutoUnmanage, type Boolean, default False, access CG
  • XmNbuttonFontList β€” class XmCButtonFontList, type XmFontList, default dynamic, access CSG
  • XmNcancelButton β€” class XmCWidget, type Widget, default NULL, access SG
  • XmNdefaultButton β€” class XmCWidget, type Widget, default NULL, access SG
  • XmNdefaultPosition β€” class XmCDefaultPosition, type Boolean, default True, access CSG
  • XmNdialogStyle β€” class XmCDialogStyle, type unsigned char, default dynamic, access CSG
  • XmNdialogTitle β€” class XmCDialogTitle, type XmString, default NULL, access CSG
  • XmNfocusCallback β€” class XmCCallback, type XtCallbackList, default NULL, access C
  • XmNlabelFontList β€” class XmCLabelFontList, type XmFontList, default dynamic, access CSG
  • XmNmapCallback β€” class XmCCallback, type XtCallbackList, default NULL, access C
  • XmNmarginHeight β€” class XmCMarginHeight, type Dimension, default 10, access CSG
  • XmNmarginWidth β€” class XmCMarginWidth, type Dimension, default 10, access CSG
  • XmNnoResize β€” class XmCNoResize, type Boolean, default False, access CSG

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 β€” class XmCBottomShadowColor, type Pixel, default dynamic, access CSG
  • XmNbottomShadowPixmap β€” class XmCBottomShadowPixmap, type Pixmap, default XmUNSPECIFIED_PIXMAP, access CSG
  • XmNforeground β€” class XmCForeground, type Pixel, default dynamic, access CSG
  • XmNhelpCallback β€” class XmCCallback, type XtCallbackList, default NULL, access C
  • XmNhighlightColor β€” class XmCHighlightColor, type Pixel, default dynamic, access CSG
  • XmNhighlightPixmap β€” class XmCHighlightPixmap, type Pixmap, default dynamic, access CSG
  • XmNinitialFocus β€” class XmCInitialFocus, type Widget, default dynamic, access CSG
  • XmNnavigationType β€” class XmCNavigationType, type XmNavigationType, default XmTAB_GROUP, access CSG
  • XmNshadowThickness β€” class XmCShadowThickness, type Dimension, default 2, access CSG
  • XmNstringDirection β€” class XmCStringDirection, type XmStringDirection, default dynamic, access CG
  • XmNtopShadowColor β€” class XmCTopShadowColor, type Pixel, default dynamic, access CSG
  • XmNtopShadowPixmap β€” class XmCTopShadowPixmap, type Pixmap, default dynamic, access CSG
  • XmNtraversalOn β€” class XmCTraversalOn, type Boolean, default True, access CSG
  • XmNunitType β€” class XmCUnitType, type unsigned char, default dynamic, access CSG
  • XmNuserData β€” class XmCUserData, type XtPointer, default NULL, access CSG

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 β€” class XmCReadOnly, type WidgetList, default NULL, access G
  • XmNinsertPosition β€” class XmCInsertPosition, type XtOrderProc, default NULL, access CSG
  • XmNnumChildren β€” class XmCReadOnly, type Cardinal, default 0, access G

πŸ’… Core Resource Set πŸ’…

the inherited classic lineup, every single one, no skips ✨

  • XmNaccelerators β€” class XmCAccelerators, type XtAccelerators, default dynamic, access N/A
  • XmNancestorSensitive β€” class XmCSensitive, type Boolean, default dynamic, access G
  • XmNbackground β€” class XmCBackground, type Pixel, default dynamic, access CSG
  • XmNbackgroundPixmap β€” class XmCPixmap, type Pixmap, default XmUNSPECIFIED_PIXMAP, access CSG
  • XmNborderColor β€” class XmCBorderColor, type Pixel, default XtDefaultForeground, access CSG
  • XmNborderPixmap β€” class XmCPixmap, type Pixmap, default XmUNSPECIFIED_PIXMAP, access CSG
  • XmNborderWidth β€” class XmCBorderWidth, type Dimension, default 0, access CSG
  • XmNcolormap β€” class XmCColormap, type Colormap, default dynamic, access CG
  • XmNdepth β€” class XmCDepth, type int, default dynamic, access CG
  • XmNdestroyCallback β€” class XmCCallback, type XtCallbackList, default NULL, access C
  • XmNheight β€” class XmCHeight, type Dimension, default dynamic, access CSG
  • XmNinitialResourcesPersistent β€” class XmCInitialResourcesPersistent, type Boolean, default True, access C
  • XmNmappedWhenManaged β€” class XmCMappedWhenManaged, type Boolean, default True, access CSG
  • XmNscreen β€” class XmCScreen, type Screen, default Screen*, access dynamic
  • XmNsensitive β€” class XmCSensitive, type Boolean, default True, access CSG
  • XmNtranslations β€” class XmCTranslations, type XtTranslations, default dynamic, access CSG
  • XmNwidth β€” class XmCWidth, type Dimension, default dynamic, access CSG
  • XmNx β€” class XmCPosition, type Position, default 0, access CSG
  • XmNy β€” class XmCPosition, type Position, default 0, access CSG

πŸŽ€ 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 the XEvent that 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 🫢



and that's a wrap on XmTabStack(3X) πŸ’– you read the whole thing, main character behavior fr fr. no cap, you ate. periodt. ✨