1. Do not let a pane grow larger than its max or smaller than its min size.
In addition do not let a pane without a sash shrink below its preferred size
due to a grip movement of another pane.
2. Do not adjust panes with XmNskipAdjust set.
3. Do not adjust panes away from their preferred size, although moving one closer to its preferred size is fine.
If the relayout is due to a resize or change in management then the panes are searched from bottom to top. If space is needed above the current sash the panes are searched from bottom to top beginning with the second pane above the grip that was moved. If space is needed below the current sash the panes are searched from top to bottom beginning with the second pane below the grip that was moved. The Paned widget never wraps its pane resizing. Therefore if space is needed below the sash then no widget above the sash will ever be resized.
Note: If the orientation is horizontal then substitute "right" for "bottom" and "left" for "top" in the above paragraph.
When the Paned widget is resized it must determine a new size for each pane. There are two methods of doing this. The Paned widget can either give each pane its preferred size and then resize the panes to fit, or it can use the current sizes and then resize the panes to fit. The XmNresizeToPreferred constraint resource allows the application to tell the Paned widget whether to query the child about its preferred size (subject to the XmNpreferredPaneSize) or to use the current size when refiguring the pane locations after the Paned widget has been resized.
All panes assume they should resize to their preferred size until the Paned widget becomes visible to the user.
Paned inherits behavior and resources from the Core, Composite, Constraint, abd Xmmanager classes.
The class pointer of xmPanedWidgetClass.
The class name is XmPaned.
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).
XmPaned Resource Set Name Class Type Default Access XmNcursor XmCursor tCursor None CSG XmNmarginHeight XmCMarginHeight Dimension 3 CSG XmNmarginWidth XmCMarginWidth Dimension 3 CSG XmNorientation XmCOrientation unsigned char XmVERTICAL CSG XmNrefigureMode XmCBoolean Boolean True CSG XmNsashHeight XmCSashHeight Dimension 8 CSG XmNsashIndent XmCSashIndent Position -10 CSG XmNsashShadowThickness XmCShadowThickness Dimension dynamic CSG XmNsashTranslations%Translations%XtTranslations%see below XmNsashWidth XmCSashWidth Dimension 10 CSG XmNseparatorOn XmCSeparatorOn Boolean True CSG XmNspacing XmCSpacing Dimension 8 CSG
XmNcursor Image that will be displayed as the pointer cursor whenever the pointer is over this widget. If the children do not explicitly set their cursor attribute then this resource will be inherited by each child. XmNmarginHeight Specifies the distance between the top and bottom edges of the Paned widget and its children. XmNmarginWidth Specifies the distance between the left and right edges of the Paned widget and its children. XmNorientation Specifies the layout as either vertical (with the XmVERTICAL value) or horizontal (with the XmHORIZONTAL value). 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. XmNrefigureMode Determines whether the panes positions are recomputed and repositioned when programmatic changes are being made to the Paned widget. Setting this resource to True resets the children to their appropriate positions. XmNsashHeight Specifies the height of the sash. XmNsashIndent Specifies the horizontal placement of the sash along each pane. A positive value causes the sash to be offset from the near (left) side of the Paned widget, and a negative value causes the sash to be offset from the far (right) side of the Paned widget. If the offset is greater than the width of the Paned widget minus the width of the sash, the sash is placed flush against the near side of the Paned widget. Whether the placement actually corresponds to the left or right side of the Paned widget depends on the XmNlayoutDirection resource of the widget. XmNsashTranslations Translation bindings for the sash. See below. XmNsashShadowThickness Specifies the thickness of the shadows of the sashes. XmNsashWidth Specifies the width of the sash. XmNseparatorOn Determines whether a separator is created between each of the panes. Setting this resource to True creates a Separator at the midpoint between each of the panes. XmNspacing Specifies the distance between each child pane.
XmPaned Constraint Resource Set Name Class Type Default Access XmNallowResize XmCBoolean Boolean False CSG XmNpaneMaximum XmCPaneMaximum Dimension 1000 CSG XmNpaneMinimum XmCPaneMinimum Dimension 1 CSG XmNskipAdjust XmCBoolean Boolean False CSG XmNpreferredPaneSize XmCPreferredPaneSize Dimension XmPanedAskChild XmNresizeToPreferred XmCBoolean Boolean False XmNshowSash XmCBoolean Boolean True XmNallowResize Allows an application to specify whether the Paned widget should allow a pane to request to be resized. This flag has an effect only after the Paned widget and its children have been realized. If this flag is set to True, the Paned widget tries to honor requests to alter the height of the pane. If False, it always denies pane requests to resize. XmNpaneMaximum Allows an application to specify the maximum size to which a pane may be resized. This value must be greater than the specified minimum. XmNpaneMinimum Allows an application to specify the minimum size to which a pane may be resized. This value must be greater than 0 (zero). XmNskipAdjust When set to True, this Boolean resource allows an application to specify that the Paned widget should not automatically resize this pane. XmNpreferredPaneSize Preferred size of the pane. If this value is not set the paned widget will query the child for a preferred size. This resource allows the user or application to provide a new preferred size. XmNresizeToPreferred Specifies whether to resize each pane to its preferred size when the Paned window is resized. If this is False then only those panes the user has not resized with the sashes will be resized to their preferred size. XmNshowSash If True show the Sash below or to the right of this pane.
Paned widget 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.
XmManager Resource Set Name Class Type Default Access XmNbottomShadowColor XmCBottomShadowColor Pixel dynamic CSG XmNbottomShadowPixmap XmCBottomShadowPixmap Pixmap XmUNSPECIFIED_PIXMAP CSG XmNforeground XmCForeground Pixel dynamic CSG XmNhelpCallback XmCCallback XtCallbackList NULL C XmNhighlightColor XmCHighlightColor Pixel dynamic CSG XmNhighlightPixmap XmCHighlightPixmap Pixmap dynamic CSG XmNinitialFocus XmCInitialFocus Widget NULL CSG XmNlayoutDirection XmCLayoutDirection XmDirection dynamic CG XmNnavigationType XmCNavigationType XmNavigationType XmTAB_GROUP CSG XmNpopupHandlerCallback XmCCallback XtCallbackList NULL C XmNshadowThickness XmCShadowThickness Dimension 2 CSG XmNstringDirection XmCStringDirection XmStringDirection dynamic CG XmNtopShadowColor XmCTopShadowColor Pixel dynamic CSG XmNtopShadowPixmap XmCTopShadowPixmap Pixmap dynamic CSG XmNtraversalOn XmCTraversalOn Boolean True CSG XmNunitType XmCUnitType unsigned char dynamic CSG XmNuserData XmCUserData XtPointer NULL CSG
Core Resource Set Name Class Type Default Access XmNaccelerators XmCAccelerators XtAccelerators dynamic CSG XmNancestorSensitive XmCSensitive Boolean dynamic G XmNbackground XmCBackground Pixel dynamic CSG XmNbackgroundPixmap XmCPixmap Pixmap XmUNSPECIFIED_PIXMAP CSG XmNborderColor XmCBorderColor Pixel XtDefaultForeground CSG XmNborderPixmap XmCPixmap Pixmap XmUNSPECIFIED_PIXMAP CSG XmNborderWidth XmCBorderWidth Dimension 0 CSG XmNcolormap XmCColormap Colormap dynamic CG XmNdepth XmCDepth int dynamic CG XmNdestroyCallback XmCCallback XtCallbackList NULL C XmNheight XmCHeight Dimension dynamic CSG XmNinitialResourcesPersistent XmCInitialResourcesPersistent Boolean True C XmNmappedWhenManaged XmCMappedWhenManaged Boolean True CSG XmNscreen XmCScreen Screen * dynamic CG XmNsensitive XmCSensitive Boolean True CSG XmNtranslations XmCTranslations XtTranslations dynamic CSG XmNwidth XmCWidth Dimension dynamic CSG XmNx XmCPosition Position 0 CSG XmNy XmCPosition Position 0 CSG
Composite Resource Set Name Class Type Default Access XmNchildren XmCReadOnly WidgetList NULL G XmNinsertPosition XmCInsertPosition XtOrderProc default procedure CSG XmNnumChildren XmCReadOnly Cardinal 0 G
XmPaned widget inherits translations from XmManager.
The translations for sashes within the Paned widget are described in the following table.
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.
~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><osfHelp>: Help() :c <Key><osfUp>: SashAction(Key,10,Up) :<Key><osfUp>: SashAction(Key,1,Up) :c <Key><osfRight>: SashAction(Key,10,Right) :<Key><osfRight>: SashAction(Key,1,Right) :c <Key><osfDown>: SashAction(Key,10,Down) :<Key><osfDown>: SashAction(Key,1,Down) :c <Key><osfLeft>: SashAction(Key,10,Left) :<Key><osfLeft>: SashAction(Key,1,Left) s ~m ~a <Key>Tab: PrevTabGroup() ~m ~a <Key>Tab: NextTabGroup()
The XmPaned action routines are
Help(): Calls the callbacks for XmNhelpCallback if 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) or SashAction(Key,increment,direction): The Start action activates the interactive placement of the panes borders. The Move action 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. The Commit action 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 the SashAction action routine is not a direct action routine of the XmPaned, but rather an action of the Sash control created by the XmPaned.
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
The bindings for virtual keys are vendor specific. For information about bindings for virtual buttons and keys, see VirtualBindings(3).
Composite(3), Constraint(3), Core(3), XmCreatePaned(3), XmManager(3), XmPaneGetpanes(3), XmVaCreatePaned(3), and XmVaCreateManagedPaned(3).