XMPANEDWINDOW(3)
π XmPanedWindow π
okay bestie, this is the manual page for XmPanedWindow(library call) β the PanedWindow widget class. it's giving composite widget, constraint energy, and sashes. no cap. β¨
β¨ NAME β¨
XmPanedWindow β The PanedWindow widget class
π SYNOPSIS π
#include <Xm/PanedW.h>
πΈ DESCRIPTION πΈ
PanedWindow is a composite widget that lays out its children in a vertically tiled format. Children show up top-to-bottom: the first child inserted is at the top of the PanedWindow, and the last child inserted is at the bottom. The PanedWindow grows to match the width of its widest child, and all the other children are forced to that same width. The height of the PanedWindow is equal to the sum of the heights of all its children, the spacing between them, and the size of the top and bottom margins. math but make it layout β¨
The user can also adjust the size of the panes. To make that happen, a pane control sash is created for most children. The sash appears as a square box positioned on the bottom of the pane that it controls. The user can adjust the size of a pane by using the mouse or keyboard. drag and drop but vintage π
The PanedWindow is also a constraint widget, which means it creates and manages a set of constraints for each child. You can specify a minimum and maximum size for each pane. The PanedWindow does not allow a pane to be resized below its minimum size or beyond its maximum size. Also, when the minimum size of a pane is equal to its maximum size, no control sash is presented for that pane or for the lowest pane. respect the limits, bestie
The default XmNinsertPosition procedure for PanedWindow causes all panes to appear first in the XmNchildren list, and all sashes to appear after the panes. For a pane child, it returns the value of XmNpositionIndex if one has been specified for the child. Otherwise, it returns the number of panes in the PanedWindow's XmNchildren list. Other than the fact that all sashes appear after all panes, the insertion order of sashes is unspecified. This procedure also causes nonsash widgets to be inserted after other nonsash children but before any sashes. The behavior of PanedWindow is undefined if XmNinsertPosition is set to a procedure other than the default.
π¨ undefined behavior alert: setting XmNinsertPosition to anything other than the default procedure? PanedWindow is not okay with that. periodt. π
All panes and sashes in a PanedWindow must be tab groups. When a pane is inserted as a child of the PanedWindow, if the pane's XmNnavigationType is not XmEXCLUSIVE_TAB_GROUP, PanedWindow sets it to XmSTICKY_TAB_GROUP. keyboard navigation stays iconic
π¦ Descendants π¦
PanedWindow automatically creates for each paned window the descendants shown in the following table. An application can use XtName and the child list information to gain access to the named descendant. In addition, a user or an application can use the named descendant when specifying resource values. iykyk, named descendants are the plug
- Named Descendant:
Sashβ Class:subclass of XmPrimitiveβ Identity:sash - Named Descendant:
Separatorβ Class:XmSeparatorGadgetβ Identity:dividing line between window panes
π Classes π
PanedWindow inherits behavior and resources from the Core, Composite, Constraint, and XmManager classes. royalty inherits from royalty
The class pointer is xmPanedWindowWidgetClass.
The class name is XmPanedWindow.
β¨ 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). .Xdefaults girlies, this one's for you
XmNmarginHeightβ Class:XmCMarginHeight, Type:Dimension, Default:3, Access:CSGXmNmarginWidthβ Class:XmCMarginWidth, Type:Dimension, Default:3, Access:CSGXmNorientationβ Class:XmCOrientation, Type:unsigned char, Default:XmVERTICAL, Access:CSGXmNrefigureModeβ Class:XmCBoolean, Type:Boolean, Default:True, Access:CSGXmNsashHeightβ Class:XmCSashHeight, Type:Dimension, Default:10, Access:CSGXmNsashIndentβ Class:XmCSashIndent, Type:Position, Default:-10, Access:CSGXmNsashShadowThicknessβ Class:XmCShadowThickness, Type:Dimension, Default:dynamic, Access:CSGXmNsashWidthβ Class:XmCSashWidth, Type:Dimension, Default:10, Access:CSGXmNseparatorOnβ Class:XmCSeparatorOn, Type:Boolean, Default:True, Access:CSGXmNspacingβ Class:XmCSpacing, Type:Dimension, Default:8, Access:CSGXmNmarginHeightβ Specifies the distance between the top and bottom edges of the PanedWindow and its children. personal space for the top and bottomXmNmarginWidthβ Specifies the distance between the left and right edges of the PanedWindow and its children. personal space for the sidesXmNorientationβ Specifies the layout as either vertical (with theXmVERTICALvalue) or horizontal (with theXmHORIZONTALvalue). In the vertical layout, the children are laid out in a vertically tiled format. In the horizontal layout, the children are laid out in a horizontal layout, with the sash moveable along the horizontal axis. choose your axis, bestieXmNrefigureModeβ Determines whether the panes' positions are recomputed and repositioned when programmatic changes are being made to the PanedWindow. Setting this resource toTrueresets the children to their appropriate positions. True = snap back into placeXmNsashHeightβ Specifies the height of the sash. how tall is that lil handleXmNsashIndentβ this one decides where the sash sits horizontally along each pane, and honestly the sign thing is so real. A positive value pushes the sash away from the near (left) side of the PanedWindow, and a negative value pulls it toward the far (right) side. And if your offset is bigger than the PanedWindow's width minus the sash's width? Bestie, the sash just gets placed flush against the near side. That's it, that's the rule. π
Also, whether "near" actually means the left or the right side of the PanedWindow depends on the widget's XmNlayoutDirection resource. So likeβ¦ read the room first, okay? π¦
XmNsashShadowThicknessβ sets the thickness of the shadows on the sashes. β¨XmNsashWidthβ sets the width of the sash. Simple, iconic, no notes. πXmNseparatorOnβ controls whether a separator gets created between each of the panes. Set this resource toTrueand boom, a Separator appears at the midpoint between each of the panes. πΈXmNspacingβ the distance between each child pane. Personal space matters, fr fr. π
π XmPanedWindow Constraint Resource Set π
okay so these are the constraint resources, meaning they live on the children, not on the PanedWindow itself. Every single one, right here, no skips:
XmNallowResizeβ classXmCBoolean, typeBoolean, defaultFalse, accessCSGXmNpaneMaximumβ classXmCPaneMaximum, typeDimension, default1000, accessCSGXmNpaneMinimumβ classXmCPaneMinimum, typeDimension, default1, accessCSGXmNpositionIndexβ classXmCPositionIndex, typeshort, defaultXmLAST_POSITION, accessCSGXmNskipAdjustβ classXmCBoolean, typeBoolean, defaultFalse, accessCSG
XmNallowResizeβ lets an application say whether the PanedWindow should let a pane request to be resized. Important: this flag only does anything after the PanedWindow and its children have been realized. Set it toTrueand the PanedWindow tries to honor requests to alter the height of the pane. Set it toFalseand it always denies pane requests to resize. Always. No negotiation. πXmNpaneMaximumβ lets an application set the maximum size a pane can be resized to. Heads up: this value must be greater than the specified minimum. That's not a suggestion, that's the law. β οΈXmNpaneMinimumβ lets an application set the minimum size a pane can be resized to. And this value must be greater than0(zero). Zero is not it, bestie. π«XmNpositionIndexβ specifies the position of the widget in its parent's list of children (that's the list of pane children, not including sashes). The value is an integer that is no less than0(zero) and no greater than the number of children in the list at the time the value is specified. A value of0means the child goes at the beginning of the list. You can also specifyXmLAST_POSITION(which is the default), and that means the child gets placed at the end of the list. Any other value is just ignored, sorry babe. π AndXtGetValuesreturns the position of the widget in its parent's child list at the time of the call toXtGetValues.
Now the mechanics, because this part is lowkey a whole situation. When a widget is inserted into its parent's child list, the positions of any existing children that are greater than or equal to the specified widget's XmNpositionIndex are increased by 1.
And the effect of a call to XtSetValues for XmNpositionIndex is to:
- remove the specified widget from its parent's child list,
- decrease by one the positions of any existing children that are greater than the specified widget's former position in the list, and then
- insert the specified widget into its parent's child list as described in the preceding sentence.
Yes it's giving choreography. Yes it's necessary. π
XmNskipAdjustβ when set toTrue, thisBooleanresource lets an application specify that the PanedWindow should not automatically resize this pane. Let it breathe. π§
π Inherited Resources π
PanedWindow inherits behavior and resources from the superclasses described in the following tables. For a complete description of each resource, refer to the reference page for that superclass. iykyk, always check the parent's docs before you come for mine. π
π XmManager Resource Set π
okay bestie, before we get to the β¨main characterβ¨ resources that XmPanedWindow brings to the party, you gotta meet the ones it inherits from its parent class, XmManager. These are lowkey the whole vibe of every manager widget, so lock in π₯
For each one I'm giving you the name, its class, its type, its default, and its access code β exactly as the source says it, no cap:
XmNbottomShadowColorβ classXmCBottomShadowColor, typePixel, default dynamic, accessCSGπXmNbottomShadowPixmapβ classXmCBottomShadowPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSGXmNforegroundβ classXmCForeground, typePixel, default dynamic, accessCSGXmNhelpCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCπ«ΆXmNhighlightColorβ classXmCHighlightColor, typePixel, default dynamic, accessCSGXmNhighlightPixmapβ classXmCHighlightPixmap, typePixmap, default dynamic, accessCSGXmNinitialFocusβ classXmCInitialFocus, typeWidget, defaultNULL, accessCSGXmNlayoutDirectionβ classXmCLayoutDirection, typeXmDirection, default dynamic, accessCGπXmNnavigationTypeβ classXmCNavigationType, typeXmNavigationType, defaultXmTAB_GROUP, accessCSGXmNpopupHandlerCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCXmNshadowThicknessβ classXmCShadowThickness, typeDimension, default2, accessCSGβ¨XmNstringDirectionβ 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π
that's the whole inherited set, bestie β every last one of them, in order, nothing skipped π and yeah, a bunch of those defaults literally just say dynamic, which is exactly what the page says, so don't come for me, I'm just the messenger π
heads up: this is theXmManagerset, so it applies toXmPanedWindowthrough inheritance β that's not me guessing, that's the whole reason this table is sitting in this manpage π
and wait, there's more coming, so don't go anywhere πΈ
okay so this next chunk is the Core Resource Set β every single resource with its class, type, default, and access level. I'm putting it in bullet form so your eyes don't glaze over, bestie π
XmNacceleratorsβ classXmCAccelerators, typeXtAccelerators, defaultdynamic, accessCSG. it's giving shortcut energy, periodt β¨XmNancestorSensitiveβ classXmCSensitive, typeBoolean, defaultdynamic, accessG. lowkey iconic π¦XmNbackgroundβ classXmCBackground, typePixel, defaultdynamic, accessCSG. main character background vibes πXmNbackgroundPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSG. not me obsessing over this one πXmNborderColorβ classXmCBorderColor, typePixel, defaultXtDefaultForeground, accessCSG. slay that border aesthetic πXmNborderPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSG. the way that pixmap is unspecifiedβ¦ iykyk πΈXmNborderWidthβ classXmCBorderWidth, typeDimension, default0, accessCSG. zero width, zero problems, no cap π«ΆXmNcolormapβ classXmCColormap, typeColormap, defaultdynamic, accessCG. it's giving color, literally πXmNdepthβ classXmCDepth, typeint, defaultdynamic, accessCG. deep, fr fr πXmNdestroyCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessC. bye bestie, callback time πXmNheightβ classXmCHeight, typeDimension, defaultdynamic, accessCSG. tall queen behavior πXmNinitialResourcesPersistentβ classXmCInitialResourcesPersistent, typeBoolean, defaultTrue, accessC. persistent? we love that for her πXmNmappedWhenManagedβ classXmCMappedWhenManaged, typeBoolean, defaultTrue, accessCSG. mapped and managed, the dream β¨XmNscreenβ classXmCScreen, typeScreen *, defaultdynamic, accessCG. big screen energy, periodt π¬XmNsensitiveβ classXmCSensitive, typeBoolean, defaultTrue, accessCSG. sensitive but make it iconic π₯ΊXmNtranslationsβ classXmCTranslations, typeXtTranslations, defaultdynamic, accessCSG. the way that translations hit different πXmNwidthβ classXmCWidth, typeDimension, defaultdynamic, accessCSG. wide leg jeans but for widgets πXmNxβ classXmCPosition, typePosition, default0, accessCSG. x marks the spot, no cap βXmNyβ classXmCPosition, typePosition, default0, accessCSG. y tho? because position, bestie π
and that's the core set, but there's more coming, so don't go anywhere π«Ά
Okay so here's the resource table, bestie β every single row, no cap. The columns are Name, Class, Type, Default, and Access, with Composite and Resource Set floating around in the header like they own the place. π
XmNchildrenβ Class:XmCReadOnly; Type:WidgetList; Default:NULL; Access:GXmNinsertPositionβ Class:XmCInsertPosition; Type:XtOrderProc; Default:default procedure; Access:CSGXmNnumChildrenβ Class:XmCReadOnly; Type:Cardinal; Default:0; Access:G
Translations β¨
XmPanedWindow inherits translations from XmManager.
The translations for sashes within the PanedWindow are described in the following table. The key names below use the X standard key event translation table syntax β that's the format Motif uses to say which widget actions go with a given key. There's a quick overview under VirtualBindings(3), and for the full format, please refer to the X Toolkit Instrinsics Documentation.
βΌc βΌs βΌm βΌa <Btn1Down>:SashAction(Start)βΌc βΌs βΌm βΌa <Btn1Motion>:SashAction(Move)βΌc βΌs βΌm βΌa <Btn1Up>:SashAction(Commit)βΌc βΌs βΌm βΌa <Btn2Down>:SashAction(Start)βΌc βΌs βΌm βΌa <Btn2Motion>:SashAction(Move)βΌc βΌs βΌm βΌa <Btn2Up>:SashAction(Commit):<Key><osfActivate>:PrimitiveParentActivate():<Key><osfCancel>:PrimitiveParentCancel():<Key><osfHelp>:Help():c <Key><osfUp>:SashAction(Key,LargeIncr,Up):<Key><osfUp>:SashAction(Key,DefaultIncr,Up):c <Key><osfRight>:SashAction(Key,LargeIncr,Right):<Key><osfRight>:SashAction(Key,DefaultIncr,Right):c <Key><osfDown>:SashAction(Key,LargeIncr,Down):<Key><osfDown>:SashAction(Key,DefaultIncr,Down):c <Key><osfLeft>:SashAction(Key,LargeIncr,Left):<Key><osfLeft>:SashAction(Key,DefaultIncr,Left)βΌs βΌm βΌa <Key>Return:PrimitiveParentActivate()s βΌm βΌa <Key>Tab:PrevTabGroup()βΌm βΌa <Key>Tab:NextTabGroup()
Action Routines π
The XmPanedWindow action routines are:
Help(): Calls the callbacks forXmNhelpCallbackif any exist. If there are no help callbacks for this widget, this action calls the help callbacks for the nearest ancestor that has them.NextTabGroup(): Moves the keyboard focus to the next tab group. By default, each pane and sash is a tab group.PrevTabGroup(): Moves the keyboard focus to the previous tab group. By default, each pane and sash is a tab group.SashAction(action)orSashAction(Key,increment,direction): TheStartaction activates the interactive placement of the pane's borders. TheMoveaction causes the sash to track the position of the pointer. If one of the panes reaches its minimum or maximum size, adjustment continues with the next adjustable pane. TheCommitaction ends sash motion.
When sash action is caused by a keyboard event, the sash with the keyboard focus is moved according to the increment and direction specified. DefaultIncr adjusts the sash by one line. LargeIncr adjusts the sash by one view region. The direction is specified as either Up, Down, Left, or Right.
Note that theSashActionaction routine is not a direct action routine of theXmPanedWindow, but rather an action of theSashcontrol created by theXmPanedWindow.
Additional Behavior πΈ
This widget has the following additional behavior:
<FocusIn>: Moves the keyboard focus to the sash and highlights it<FocusOut>: Unsets the keyboard focus in the sash and unhighlights it
Virtual Bindings π¦
The bindings for virtual keys are vendor specific. For information about bindings for virtual buttons and keys, see VirtualBindings(3).
RELATED π₯
Composite(3), Constraint(3), Core(3), XmCreatePanedWindow(3), XmManager(3), XmVaCreatePanedWindow(3), and XmVaCreateManagedPanedWindow(3).
And that's the whole vibe, bestie! The footer says it's the XmPanedWindow(library call) page β no date in sight, but honestly? Iconic. Go forth and sash your windows like the main character you are. Periodt. πβ¨π
π¦ where this page comes from
- alpine 3.24: motif-doc 2.5.2-r0 Β· LGPL-2.1-or-later
- 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