XmPaned(library call) XmPaned(library call)
NAMEXmPaned — The Paned widget class
SYNOPSIS
#include <Xm/Paned.h>
DESCRIPTION
The Paned widget manages children in a vertically or horizontally tiled
fashion with each child in a separate pane. The panes may be dynami‐
cally resized by the user using "control sashes" that appear between
the panes.
Application programmers have control over whether or not sashes and
separators are displayed, the preferred size of each pane, and which
pane will be forced to absorb size restrictions imposed by the Paned
widget's parent.
Geometry Management
The Paned widget usually resizes its children to their preferred sizes
when a new child is managed. It will first attempt to resize itself to
contain its panes exactly. If this is not possible then it will hunt
through the children, from bottom to top (or right to left), for a pane
to resize.
The Paned widget will attempt to honor the geometry request of its
children. It will first attempt to resize itself to satisfy the
request then go through the layout rules below to satisfy the request.
Only if all panes are at their min/max values will a geometry request
be refused. If the XmNallowResize resource is False for the child then
all geometry requests will be denied,
of course.
Special Considerations
When a user resizes a pane with the sashes, the Paned widget assumes
that this new size is the preferred size of both the pane above and the
pane below, unless the XmNresizeToPreferred constraint resource is True
for that pane.
Layout Semantics
In order to make effective use of the Paned widget it is helpful to
know the rules it uses to determine which child will be resized in any
given situation. There are three rules used to determine which child
is resized. While these rules are always the same, the panes that are
searched can change depending upon what caused the change of layout.
Layout Rules
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.
When searching the children the Paned widget looks for panes that sat‐
isfy all the rules, and if unsuccessful then it eliminates rule 3 and
then 2. Rule 1 is always enforced.
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.
Resizing Panes
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 XmN‐
resizeToPreferred 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.
Classes
Paned inherits behavior and resources from the Core, Composite, Con‐
straint, abd Xmmanager classes.
The class pointer of xmPanedWidgetClass.
The class name is XmPaned.
New resources
The following table defines a set of widget resources used by the pro‐
grammer to specify data. The programmer can also set the resource val‐
ues 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 chil‐
dren 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 XmNlayoutDirec‐
tion 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 pre‐
ferred 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.
Inherited Resources
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 │
├──────────────────┼───────────────────┼─────────────┼───────────────────┼────────┤
│ │ │ │ │ │
└──────────────────┴───────────────────┴─────────────┴───────────────────┴────────┘
Translations
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 transla‐
tion 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 descrip‐
tion of the format, please refer to the X Toolkit Instrinsics Documen‐
tation.
∼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()
Action Routines
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
pane's 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.
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).
RELATEDComposite(3), Constraint(3), Core(3), XmCreatePaned(3), XmManager(3),
XmPaneGetpanes(3), XmVaCreatePaned(3), and XmVaCreateManagedPaned(3).
XmPaned(library call)