diff options
author | marha <marha@users.sourceforge.net> | 2009-11-06 11:03:40 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2009-11-06 11:03:40 +0000 |
commit | 08cb4425442ca65ec28d6a2f023f885e35a7f0ed (patch) | |
tree | a9061a472d247bce27d7fb6c700c5b7e2755d036 /libXaw/spec/Paned | |
parent | ccdb20929567c70c1bbdd5df275ca7bea5c747a7 (diff) | |
parent | ace7902333b6f61aab5a6035dbcb222763bff186 (diff) | |
download | vcxsrv-08cb4425442ca65ec28d6a2f023f885e35a7f0ed.tar.gz vcxsrv-08cb4425442ca65ec28d6a2f023f885e35a7f0ed.tar.bz2 vcxsrv-08cb4425442ca65ec28d6a2f023f885e35a7f0ed.zip |
Added libXaw
Diffstat (limited to 'libXaw/spec/Paned')
-rw-r--r-- | libXaw/spec/Paned | 492 |
1 files changed, 492 insertions, 0 deletions
diff --git a/libXaw/spec/Paned b/libXaw/spec/Paned new file mode 100644 index 000000000..a6b8f0089 --- /dev/null +++ b/libXaw/spec/Paned @@ -0,0 +1,492 @@ +.\" $Xorg: Paned,v 1.3 2000/08/17 19:42:27 cpqbld Exp $ +.NH 2 +Paned Widget +.LP +.XS + Paned Widget +.XE +.IN "Paned widget" "" "@DEF@" +.Ds 0 +.TA 2.0i +.ta 2.0i +.sp +Application Header file <X11/Xaw/Paned.h> +.IN "Paned.h" "" +Class Header file <X11/Xaw/PanedP.h> +.IN "PanedP.h" "" +Class panedWidgetClass +.IN "panedWidgetClass" "" +Class Name Paned +.IN "Paned widget" "class name" +Superclass Constraint +.sp +.De +.LP +The Paned widget manages children in a vertically or horizontally +tiled fashion. The panes may be dynamically resized by the user by +using the \fIgrips\fP that appear near the right or bottom edge of the +border between two panes. +.LP +The Paned widget may accept any widget class as a pane \fBexcept\fP +Grip. Grip widgets have a special meaning for the Paned widget, and +adding a Grip as its own pane will confuse the Paned widget. +.NH 3 +Using the Paned Widget +.IN "Paned widget" "using" +.LP +The grips allow the panes to be resized by the user. The semantics of +how these panes resize is somewhat complicated, and warrants further +explanation here. When the mouse pointer is positioned on a grip and +pressed, an arrow is displayed that indicates the pane that is to be to +be resized. While keeping the mouse button down, the user can move the +grip up and down (or left and right). This, in turn, changes the size +of the pane. The size of the Paned widget will not change. Instead, +it chooses another pane (or panes) to resize. For more details on which +pane it chooses to resize, see \fBLayout Semantics\fP. +.LP +One pointer binding allows the border between two panes to be moved, +without affecting any of the other panes. When this occurs the pointer +will change to an arrow that points along the pane border. +.LP +The default bindings for the Paned widget's grips are: +.TS H +lw(1i) lw(2i) lw(2i). +_ +.sp 3p +.TB +Mouse button Pane to Resize - Vertical Pane to Resize - Horizontal +.sp 3p +_ +.TH +.R +.sp 3p +1 (left) above the grip left of the grip +2 (middle) adjust border adjust border +3 (right) below the grip right of the grip +.sp 3p +_ +.TE +.NH 3 +Resources +.LP +When creating a Paned widget instance, the following resources are +retrieved from the argument list or the resource database: +.LP +.IN "Paned widget" "resources" +.TS H +expand; +lw(1i) lw(1i) lw(1i) lw(.4i) lw(2i). +_ +.sp 3p +.TB +Name Class Type Notes Default Value +.sp 3p +_ +.TH +.R +.sp 3p +accelerators Accelerators AcceleratorTable NULL +ancestorSensitive AncestorSensitive Boolean D True +background Background Pixel XtDefaultBackground +backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap +betweenCursor Cursor Cursor A Depends on orientation +borderColor BorderColor Pixel XtDefaultForeground +borderPixmap Pixmap Pixmap XtUnspecifiedPixmap +borderWidth BorderWidth Dimension 1 +children ReadOnly WidgetList R NULL +colormap Colormap Colormap Parent's Colormap +cursor Cursor Cursor None +depth Depth int C Parent's Depth +destroyCallback Callback XtCallbackList NULL +gripCursor Cursor Cursor A Depends on orientation +gripIndent GripIndent Position 10 +gripTranslations Translations TranslationTable see below +height Height Dimension A Depends on orientation +horizontalBetweenCursor Cursor Cursor sb_up_arrow +horizontalGripCursor Cursor Cursor sb_h_double_arrow +internalBorderColor BorderColor Pixel XtDefaultForeground +internalBorderWidth BorderWidth Dimension 1 +leftCursor Cursor Cursor sb_left_arrow +lowerCursor Cursor Cursor sb_down_arrow +mappedWhenManaged MappedWhenManaged Boolean True +numChildren ReadOnly Cardinal R 0 +orientation Orientation Orientation XtorientVertical +refigureMode Boolean Boolean True +rightCursor Cursor Cursor sb_right_arrow +screen Screen Screen R Parent's Screen +sensitive Sensitive Boolean True +translations Translations TranslationTable NULL +upperCursor Cursor Cursor sb_up_arrow +verticalBetweenCursor Cursor Cursor sb_left_arrow +verticalGripCursor Cursor Cursor sb_v_double_arrow +width Width Dimension A Depends on orientation +x Paned Position 0 +y Paned Position 0 +.sp 3p +_ +.TE +.Ac +.As +.Bg +.Gp +.Bc +.Bp +.Bw +.Ch +.Cm +.IP \fBcursor\fP 1.5i +The cursor to use when the mouse pointer is over the Paned widget, but +not in any of its children (children may also inherit this cursor). It +should be noted that the internal borders are actually part of the Paned +widget, not the children. +.Dp +.Dc +.IP \fBgripCursor\fP 1.5i +The cursor to use when the grips are not active. The default value is +\fBverticalGripCursor\fP or \fBhorizontalGripCursor\fP depending on +the orientation of the Paned widget. +.IP \fBgripIndent\fP 1.5i +The amount of space left between the right (or bottom) edge of the +Paned widget and all the grips. +.IP \fBgripTranslation\fP 1.5i +Translation table that will be applied to all grips. +.Hw +.IP \fBhorizontalBetweenCursor\fP 1.5i +.br +.ns +.IP \fBverticalBetweenCursor\fP 1.5i +The cursor to be used for the grip when changing the boundary between +two panes. These resources allow the cursors to be different +depending on the orientation of the Paned widget. +.IP \fBhorizontalGripCursor\fP 1.5i +.br +.ns +.IP \fBverticalGripCursor\fP 1.5i +The cursor to be used for the grips when they are not active. These +resources allow the cursors to be different depending on the +orientation of the Paned widget. +.IP \fBinternalBorderColor\fP 1.5i +A pixel value which indexes the widget's colormap to derive the internal +border color of the widget's window. The class name of this resource +allows \fIPaned*BorderColor: blue\fP to set the internal border color +for the Paned widget. An optimization is invoked if +\fBinternalBorderColor\fP and \fBbackground\fP are the same, and the +internal borders are not drawn. \fBinternalBorderWidth\fP is still left +between the panes, however. +.IP \fBinternalBorderWidth\fP 1.5i +The width of the internal borders. This is the amount of space left +between the panes. The class name of this resource allows +\fIPaned*BorderWidth: 3\fP to set the internal border width for the +Paned widget. +.IP \fBleftCursor\fP 1.5i +.br +.ns +.IP \fBrightCursor\fP 1.5i +The cursor used to indicate which is the \fIimportant\fP pane to resize +when the Paned widget is oriented horizontally. +.IP \fBlowerCursor\fP 1.5i +.br +.ns +.IP \fBupperCursor\fP 1.5i +The cursor used to indicate which is the \fIimportant\fP pane to resize +when the Paned widget is oriented vertically. +.Mm +.Nc +This is not the same as the number of panes, since this also contains a +grip for some of the panes, use \fBXawPanedGetNumSub\fP to retrieve the +number of panes. +.IP \fBorientation\fP 1.5i +The orientation to stack the panes. This value can be either +\fBXtorientVertical\fP or \fBXtorientHorizontal\fP. +.IN "XtorientVertical" "" +.IN "XtorientHorizontal" "" +.IN "conversions" "Orientation" +.Rs "vertical \fPand\fB horizontal" +.IP \fBrefigureMode\fP 1.5i +This resource allows pane layout to be suspended. If this value is +\fBFalse\fP, then no layout actions will be taken. This may improve +efficiency when adding or removing more than one pane from the Paned +widget. +.Sc +.Se +.Tr +.Xy +.NH 3 +Constraint Resources +.LP +.IN "Paned widget" "constraint resources" +Each child of the Paned widget may request special layout resources +be applied to it. These \fIconstraint\fP resources allow the Paned +widget's children to specify individual layout requirements. +.LP +.TS H +lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i). +_ +.sp 3p +.TB +Name Class Type Notes Default Value +.sp 3p +_ +.TH +.R +.sp 3p +allowResize Boolean Boolean False +max Max Dimension Infinity +min Min Dimension Height of Grips +preferredPaneSize PreferredPaneSize Dimension ask child +resizeToPreferred Boolean Boolean False +showGrip ShowGrip Boolean True +skipAdjust Boolean Boolean False +.sp 3p +_ +.TE +.IP \fBallowResize\fP 1.5i +If this value is \fBFalse\fP the the Paned widget will disallow all +geometry requests from this child. +.IP \fBmax\fP 1.5i +.br +.ns +.IP \fBmin\fP 1.5i +The absolute maximum or minimum size for this pane. These values will +never be overridden by the Paned widget. This may cause some panes to be +pushed off the bottom (or right) edge of the paned widget. +.IP \fBpreferredPaneSize\fP 1.5i +Normally the paned widget makes a QueryGeometry call on a child to +determine the preferred size of the child's pane. There are times +when the application programmer or the user has a better idea of the +preferred size of a pane. Setting this resource causes the value +passed to be interpreted as the preferred size, in pixels, of this pane. +.IP \fBresizeToPreferred\fP 1.5i +Determines whether or not to resize each pane to its preferred size +when the Paned widget is resized. See \fBLayout Semantics\fP for details. +.IP \fBshowGrip\fP 1.5i +If \fBTrue\fP then a grip will be shown for this pane. The grip +associated with a pane is either below or to the right of the pane. No +grip is ever shown for the last pane. +.IP \fBskipAdjust\fP 1.5i +This resource is used to determine which pane is forced to be resized. +Setting this value to \fBTrue\fP makes this pane less likely to be +forced to be resized. See \fBLayout Semantics\fP for details. +.NH 3 +Layout Semantics +.LP +.IN "Paned widget" "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 relayout. +.LP +.sp +\fBLayout Rules\fP +.IP \fB1\fP .5i +Do not let a pane grow larger than its \fBmax\fP or smaller than its +\fBmin\fP. +.IP \fB2\fP .5i +Do not adjust panes with \fBskipAdjust\fP set. +.IP \fB3\fP .5i +Do not adjust panes away from their preferred size, although moving one +closer to its preferred size is fine. +.LP +When searching the children the Paned widget looks for panes that +satisfy all the rules, and if unsuccessful then it eliminates rule 3 +and then 2. Rule 1 is always enforced. +.LP +If the relayout is due to a resize or change in management then the +panes are searched from bottom to top. If the relayout is due to grip +movement then they are searched from the grip selected in the direction +opposite the pane selected. +.NH 4 +Resizing Panes from a Grip Action +.LP +The pane above the grip is resized by invoking the GripAction with +\fBUpLeftPane\fP specified. The panes below the grip are each checked +against all rules, then rules 2 and 1 and finally against rule 1 only. +No pane above the chosen pane will ever be resized. +.LP +The pane below the grip is resized by invoking the GripAction with +\fBLowRightPane\fP specified. The panes above the grip are each +checked in this case. No pane below the chosen pane will ever be resized. +.LP +Invoking GripAction with \fBThisBorderOnly\fP specified just moves the +border between the panes. No other panes are ever resized. +.NH 4 +Resizing Panes after the Paned widget is resized. +.LP +When the Pane 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 +\fBresizeToPreferred\fP resource allows the application to tell the +Paned widget whether to query the child about its preferred size +(subject to the the \fBpreferredPaneSize\fP) or to use the current size +when refiguring the pane locations after the pane has been resized. +.LP +There is one special case. All panes assume they should resize to +their preferred size until the Paned widget becomes visible to the user. +.NH 4 +Managing Children and Geometry Management +.LP +The Paned widget always resizes its children to their preferred sizes when +a new child is managed, or a geometry management request is honored. +The Paned widget 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 (right to left), for a pane to resize. +.NH 4 +Special Considerations +.LP +When a user resizes a pane with the grips, the Paned widget assumes that +this new size is the preferred size of the pane. +.NH 3 +Grip Translations +.LP +The Paned widget has no action routines of its own, as all actions are +handled through the grips. The grips are each assigned a default +Translation table. +.LP +.sp +.Ds 0 +.TA .5i 2.25i +.ta .5i 2.25i + <Btn1Down>: GripAction(Start, UpLeftPane) +.IN "GripAction" "" + <Btn2Down>: GripAction(Start, ThisBorderOnly) + <Btn3Down>: GripAction(Start, LowRightPane) + <Btn1Motion>: GripAction(Move, UpLeftPane) + <Btn2Motion>: GripAction(Move, ThisBorderOnly) + <Btn3Motion>: GripAction(Move, LowRightPane) + Any<BtnUp>: GripAction(Commit) +.De +.sp +.LP +The Paned widget interprets the \fBGripAction\fP as taking two arguments. +.IN "GripAction" "" +The first argument may be any of the following: +.IP \fBStart\fP 1i +Sets up the Paned widget for resizing and changes the cursor of the +grip. The second argument determines which pane will be resized, and +can take on any of the three values shown above. +.IP \fBMove\fP 1i +The internal borders are drawn over the current pane locations to +animate where the borders would actually be placed if you were to move +this border as shown. The second argument must match the second argument +that was passed to the \fBStart\fP action, that began this process. If +these arguments are not passed, the behavior is undefined. +.IP \fBCommit\fP 1i +This argument causes the Paned widget to commit the changes selected +by the previously started action. The cursor is changed back to the +grip's inactive cursor. No second argument is needed in this case. +.NH 3 +Convenience Routines +.LP +.IN "Paned widget" "enable pane resizing" +.IN "Paned widget" "disable pane resizing" +To enable or disable a child's request for pane resizing, +use +.PN XawPanedAllowResize : +.IN "XawPanedAllowResize" "" "@DEF@" +.FD 0 +void XawPanedAllowResize(\fIw\fP, \fIallow_resize\fP) +.br + Widget \fIw\fP; +.br + Boolean \fIallow_resize\fP; +.FN +.IP \fIw\fP 1i +Specifies the child pane. +.IP \fIallow_resize\fP +Specifies whether or not resizing requests for this child will be +granted by the Paned widget. +.LP +If allow_resize is \fBTrue\fP, the Paned widget allows geometry +requests from the child to change the pane's height. If allow_resize +is \fBFalse\fP, the Paned widget ignores geometry requests from the +child to change the pane's height. The default state is \fBTrue\fP +before the Pane is realized and \fBFalse\fP after it is realized. +This procedure is equivalent to changing the \fBallowResize\fP +constraint resource for the child. +.LP +.sp +.IN "Paned widget" "change height settings" +To change the minimum and maximum height settings for a pane, use +.PN XawPanedSetMinMax : +.IN "XawPanedSetMinMax" "" "@DEF@" +.FD 0 +void XawPanedSetMinMax(\fIw\fP, \fImin\fP, \fImax\fP) +.br + Widget \fIw\fP; +.br + int \fImin\fP, \fImax\fP; +.FN +.IP \fIw\fP 1i +Specifies the child pane. +.IP \fImin\fP 1i +Specifies the new minimum height of the child, expressed in pixels. +.IP \fImax\fP 1i +Specifies new maximum height of the child, expressed in pixels. +.LP +This procedure is equivalent to setting the \fBmin\fP and \fBmax\fP +constraint resources for the child. +.LP +.sp +.IN "Paned widget" "get height settings" +To retrieve the minimum and maximum height settings for a pane, use +.PN XawPanedGetMinMax : +.IN "XawPanedGetMinMax" "" "@DEF@" +.FD 0 +void XawPanedGetMinMax(\fIw\fP, \fImin_return\fP, \fImax_return\fP) +.br + Widget \fIw\fP; +.br + int \fI*min_return\fP, \fI*max_return\fP; +.FN +.IP \fIw\fP 1i +Specifies the child pane. +.IP \fImin_return\fP 1i +Returns the minimum height of the child, expressed in pixels. +.IP \fImax_return\fP 1i +Returns the maximum height of the child, expressed in pixels. +.LP +This procedure is equivalent to getting the \fBmin\fP and \fBmax\fP +resources for this child child. +.LP +.sp +.IN "Paned widget" "enable auto-reconfiguring" +.IN "Paned widget" "disable auto-reconfiguring" +To enable or disable automatic recalculation of pane sizes and positions, +use +.PN XawPanedSetRefigureMode : +.IN "XawPanedSetRefigureMode" "" "@DEF@" +.FD 0 +void XawPanedSetRefigureMode(\fIw\fP, \fImode\fP) +.br + Widget \fIw\fP; +.br + Boolean \fImode\fP; +.FN +.IP \fIw\fP 1i +Specifies the Paned widget. +.IP \fImode\fP 1i +Specifies whether the layout of the Paned widget is enabled (\fBTrue\fP) +or disabled (\fBFalse\fP). +.LP +When making several changes to the children of a Paned widget +after the Paned has been realized, it is a good idea to disable +relayout until after all changes have been made. +.LP +.sp +.IN "Paned widget" "getting the number of children" +To retrieve the number of panes in a paned widget use +\fBXawPanedGetNumSub\fP: +.IN "XawPanedGetNumSub" "" "@DEF@" +.FD 0 +int XawPanedGetNumSub(\fIw\fP) +.br + Widget \fIw\fP; +.FN +.IP \fIw\fP 1i +Specifies the Paned widget. +.LP +This function returns the number of panes in the Paned widget. This is +\fBnot\fP the same as the number of children, since the grips are also +children of the Paned widget. |