Paned.xml revision 5ec34c4c
1<sect1 id="Paned_Widget"> 2<title>Paned Widget</title> 3<para> 4<!-- .LP --> 5<!-- .XS --> 6<!-- Paned Widget --> 7<!-- .XE --> 8<indexterm significance="preferred"><primary>Paned widget</primary></indexterm> 9<literallayout class="monospaced"> 10<!-- .TA 2.0i --> 11<!-- .ta 2.0i --> 12<!-- .sp --> 13Application Header file <X11/Xaw/Paned.h> 14<indexterm><primary>Paned.h</primary></indexterm> 15Class Header file <X11/Xaw/PanedP.h> 16<indexterm><primary>PanedP.h</primary></indexterm> 17Class panedWidgetClass 18<indexterm><primary>panedWidgetClass</primary></indexterm> 19Class Name Paned 20<indexterm><primary>Paned widget</primary><secondary>class name</secondary></indexterm> 21Superclass Constraint 22<!-- .sp --> 23</literallayout> 24</para> 25<para> 26<!-- .LP --> 27The Paned widget manages children in a vertically or horizontally 28tiled fashion. The panes may be dynamically resized by the user by 29using the <emphasis remap='I'>grips</emphasis> that appear near the right or bottom edge of the 30border between two panes. 31</para> 32<para> 33<!-- .LP --> 34The Paned widget may accept any widget class as a pane <function>except</function> 35Grip. Grip widgets have a special meaning for the Paned widget, and 36adding a Grip as its own pane will confuse the Paned widget. 37</para> 38<sect2 id="Using_the_Paned_Widget"> 39<title>Using the Paned Widget</title> 40<indexterm><primary>Paned widget</primary><secondary>using</secondary></indexterm> 41<para> 42<!-- .LP --> 43The grips allow the panes to be resized by the user. The semantics of 44how these panes resize is somewhat complicated, and warrants further 45explanation here. When the mouse pointer is positioned on a grip and 46pressed, an arrow is displayed that indicates the pane that is to be to 47be resized. While keeping the mouse button down, the user can move the 48grip up and down (or left and right). This, in turn, changes the size 49of the pane. The size of the Paned widget will not change. Instead, 50it chooses another pane (or panes) to resize. For more details on which 51pane it chooses to resize, see <function>Layout Semantics</function>. 52</para> 53<para> 54<!-- .LP --> 55One pointer binding allows the border between two panes to be moved, 56without affecting any of the other panes. When this occurs the pointer 57will change to an arrow that points along the pane border. 58</para> 59<para> 60<!-- .LP --> 61The default bindings for the Paned widget's grips are: 62<informaltable> 63 <tgroup cols='3' align='center'> 64 <colspec colname='c1'/> 65 <colspec colname='c2'/> 66 <colspec colname='c3'/> 67 <thead> 68 <row> 69 <entry>Mouse button</entry> 70 <entry>Pane to Resize - Vertical</entry> 71 <entry>Pane to Resize - Horizontal</entry> 72 </row> 73 </thead> 74 <tbody> 75 <row> 76 <entry>1 (left)</entry> 77 <entry>above the grip</entry> 78 <entry>left of the grip</entry> 79 </row> 80 <row> 81 <entry>2 (middle)</entry> 82 <entry>adjust border</entry> 83 <entry>adjust border</entry> 84 </row> 85 <row> 86 <entry>3 (right)</entry> 87 <entry>below the grip</entry> 88 <entry>right of the grip</entry> 89 </row> 90 <row> 91 <entry>_</entry> 92 </row> 93 </tbody> 94 </tgroup> 95</informaltable> 96</para> 97</sect2> 98<sect2 id='Paned::Resources'> 99<title>Resources</title> 100<para> 101<!-- .LP --> 102When creating a Paned widget instance, the following resources are 103retrieved from the argument list or the resource database: 104</para> 105<para> 106<!-- .LP --> 107<indexterm><primary>Paned widget</primary><secondary>resources</secondary></indexterm> 108<informaltable> 109 <tgroup cols='5' align='center'> 110 <colspec colname='c1'/> 111 <colspec colname='c2'/> 112 <colspec colname='c3'/> 113 <colspec colname='c4'/> 114 <colspec colname='c5'/> 115 <thead> 116 <row> 117 <entry>Name</entry> 118 <entry>Class</entry> 119 <entry>Type</entry> 120 <entry>Notes</entry> 121 <entry>Default Value</entry> 122 </row> 123 </thead> 124 <tbody> 125 <row> 126 <entry>accelerators</entry> 127 <entry>Accelerators</entry> 128 <entry>AcceleratorTable</entry> 129 <entry></entry> 130 <entry>NULL</entry> 131 </row> 132 <row> 133 <entry>ancestorSensitive</entry> 134 <entry>AncestorSensitive</entry> 135 <entry>Boolean</entry> 136 <entry>D</entry> 137 <entry>True</entry> 138 </row> 139 <row> 140 <entry>background</entry> 141 <entry>Background</entry> 142 <entry>Pixel</entry> 143 <entry></entry> 144 <entry>XtDefaultBackground</entry> 145 </row> 146 <row> 147 <entry>backgroundPixmap</entry> 148 <entry>Pixmap</entry> 149 <entry>Pixmap</entry> 150 <entry></entry> 151 <entry>XtUnspecifiedPixmap</entry> 152 </row> 153 <row> 154 <entry>betweenCursor</entry> 155 <entry>Cursor</entry> 156 <entry>Cursor</entry> 157 <entry>A</entry> 158 <entry>Depends on orientation</entry> 159 </row> 160 <row> 161 <entry>borderColor</entry> 162 <entry>BorderColor</entry> 163 <entry>Pixel</entry> 164 <entry></entry> 165 <entry>XtDefaultForeground</entry> 166 </row> 167 <row> 168 <entry>borderPixmap</entry> 169 <entry>Pixmap</entry> 170 <entry>Pixmap</entry> 171 <entry></entry> 172 <entry>XtUnspecifiedPixmap</entry> 173 </row> 174 <row> 175 <entry>borderWidth</entry> 176 <entry>BorderWidth</entry> 177 <entry>Dimension</entry> 178 <entry></entry> 179 <entry>1</entry> 180 </row> 181 <row> 182 <entry>children</entry> 183 <entry>ReadOnly</entry> 184 <entry>WidgetList</entry> 185 <entry>R</entry> 186 <entry>NULL</entry> 187 </row> 188 <row> 189 <entry>colormap</entry> 190 <entry>Colormap</entry> 191 <entry>Colormap</entry> 192 <entry></entry> 193 <entry>Parent's Colormap</entry> 194 </row> 195 <row> 196 <entry>cursor</entry> 197 <entry>Cursor</entry> 198 <entry>Cursor</entry> 199 <entry></entry> 200 <entry>None</entry> 201 </row> 202 <row> 203 <entry>depth</entry> 204 <entry>Depth</entry> 205 <entry>int</entry> 206 <entry>C</entry> 207 <entry>Parent's Depth</entry> 208 </row> 209 <row> 210 <entry>destroyCallback</entry> 211 <entry>Callback</entry> 212 <entry>XtCallbackList</entry> 213 <entry></entry> 214 <entry>NULL</entry> 215 </row> 216 <row> 217 <entry>gripCursor</entry> 218 <entry>Cursor</entry> 219 <entry>Cursor</entry> 220 <entry>A</entry> 221 <entry>Depends on orientation</entry> 222 </row> 223 <row> 224 <entry>gripIndent</entry> 225 <entry>GripIndent</entry> 226 <entry>Position</entry> 227 <entry></entry> 228 <entry>10</entry> 229 </row> 230 <row> 231 <entry>gripTranslations</entry> 232 <entry>Translations</entry> 233 <entry>TranslationTable</entry> 234 <entry></entry> 235 <entry>see below</entry> 236 </row> 237 <row> 238 <entry>height</entry> 239 <entry>Height</entry> 240 <entry>Dimension</entry> 241 <entry>A</entry> 242 <entry>Depends on orientation</entry> 243 </row> 244 <row> 245 <entry>horizontalBetweenCursor</entry> 246 <entry>Cursor</entry> 247 <entry>Cursor</entry> 248 <entry></entry> 249 <entry>sb_up_arrow</entry> 250 </row> 251 <row> 252 <entry>horizontalGripCursor</entry> 253 <entry>Cursor</entry> 254 <entry>Cursor</entry> 255 <entry></entry> 256 <entry>sb_h_double_arrow</entry> 257 </row> 258 <row> 259 <entry>internalBorderColor</entry> 260 <entry>BorderColor</entry> 261 <entry>Pixel</entry> 262 <entry></entry> 263 <entry>XtDefaultForeground</entry> 264 </row> 265 <row> 266 <entry>internalBorderWidth</entry> 267 <entry>BorderWidth</entry> 268 <entry>Dimension</entry> 269 <entry></entry> 270 <entry>1</entry> 271 </row> 272 <row> 273 <entry>leftCursor</entry> 274 <entry>Cursor</entry> 275 <entry>Cursor</entry> 276 <entry></entry> 277 <entry>sb_left_arrow</entry> 278 </row> 279 <row> 280 <entry>lowerCursor</entry> 281 <entry>Cursor</entry> 282 <entry>Cursor</entry> 283 <entry></entry> 284 <entry>sb_down_arrow</entry> 285 </row> 286 <row> 287 <entry>mappedWhenManaged</entry> 288 <entry>MappedWhenManaged</entry> 289 <entry>Boolean</entry> 290 <entry></entry> 291 <entry>True</entry> 292 </row> 293 <row> 294 <entry>numChildren</entry> 295 <entry>ReadOnly</entry> 296 <entry>Cardinal</entry> 297 <entry>R</entry> 298 <entry>0</entry> 299 </row> 300 <row> 301 <entry>orientation</entry> 302 <entry>Orientation</entry> 303 <entry>Orientation</entry> 304 <entry></entry> 305 <entry>XtorientVertical</entry> 306 </row> 307 <row> 308 <entry>refigureMode</entry> 309 <entry>Boolean</entry> 310 <entry>Boolean</entry> 311 <entry></entry> 312 <entry>True</entry> 313 </row> 314 <row> 315 <entry>rightCursor</entry> 316 <entry>Cursor</entry> 317 <entry>Cursor</entry> 318 <entry></entry> 319 <entry>sb_right_arrow</entry> 320 </row> 321 <row> 322 <entry>screen</entry> 323 <entry>Screen</entry> 324 <entry>Screen</entry> 325 <entry>R</entry> 326 <entry>Parent's Screen</entry> 327 </row> 328 <row> 329 <entry>sensitive</entry> 330 <entry>Sensitive</entry> 331 <entry>Boolean</entry> 332 <entry></entry> 333 <entry>True</entry> 334 </row> 335 <row> 336 <entry>translations</entry> 337 <entry>Translations</entry> 338 <entry>TranslationTable</entry> 339 <entry></entry> 340 <entry>NULL</entry> 341 </row> 342 <row> 343 <entry>upperCursor</entry> 344 <entry>Cursor</entry> 345 <entry>Cursor</entry> 346 <entry></entry> 347 <entry>sb_up_arrow</entry> 348 </row> 349 <row> 350 <entry>verticalBetweenCursor</entry> 351 <entry>Cursor</entry> 352 <entry>Cursor</entry> 353 <entry></entry> 354 <entry>sb_left_arrow</entry> 355 </row> 356 <row> 357 <entry>verticalGripCursor</entry> 358 <entry>Cursor</entry> 359 <entry>Cursor</entry> 360 <entry></entry> 361 <entry>sb_v_double_arrow</entry> 362 </row> 363 <row> 364 <entry>width</entry> 365 <entry>Width</entry> 366 <entry>Dimension</entry> 367 <entry>A</entry> 368 <entry>Depends on orientation</entry> 369 </row> 370 <row> 371 <entry>x</entry> 372 <entry>Paned</entry> 373 <entry>Position</entry> 374 <entry></entry> 375 <entry>0</entry> 376 </row> 377 <row> 378 <entry>y</entry> 379 <entry>Paned</entry> 380 <entry>Position</entry> 381 <entry></entry> 382 <entry>0</entry> 383 </row> 384 <row> 385 <entry>_</entry> 386 </row> 387 </tbody> 388 </tgroup> 389</informaltable> 390<!-- .Ac --> 391<!-- .As --> 392<!-- .Bg --> 393<!-- .Gp --> 394<!-- .Bc --> 395<!-- .Bp --> 396<!-- .Bw --> 397<!-- .Ch --> 398<!-- .Cm --> 399<variablelist> 400 <varlistentry> 401 <term> 402 <function>cursor</function> 403 </term> 404 <listitem> 405 <para> 406The cursor to use when the mouse pointer is over the Paned widget, but 407not in any of its children (children may also inherit this cursor). It 408should be noted that the internal borders are actually part of the Paned 409widget, not the children. 410<!-- .Dp --> 411<!-- .Dc --> 412 </para> 413 </listitem> 414 </varlistentry> 415 <varlistentry> 416 <term> 417 <function>gripCursor</function> 418 </term> 419 <listitem> 420 <para> 421The cursor to use when the grips are not active. The default value is 422<function>verticalGripCursor</function> or <function>horizontalGripCursor</function> depending on 423the orientation of the Paned widget. 424 </para> 425 </listitem> 426 </varlistentry> 427 <varlistentry> 428 <term> 429 <function>gripIndent</function> 430 </term> 431 <listitem> 432 <para> 433The amount of space left between the right (or bottom) edge of the 434Paned widget and all the grips. 435 </para> 436 </listitem> 437 </varlistentry> 438 <varlistentry> 439 <term> 440 <function>gripTranslation</function> 441 </term> 442 <listitem> 443 <para> 444Translation table that will be applied to all grips. 445<!-- .Hw --> 446 </para> 447 </listitem> 448 </varlistentry> 449 <varlistentry> 450 <term> 451 <function>horizontalBetweenCursor</function> 452 </term> 453 <listitem> 454 <para> 455<!-- .br --> 456<!-- .ns --> 457 </para> 458 </listitem> 459 </varlistentry> 460 <varlistentry> 461 <term> 462 <function>verticalBetweenCursor</function> 463 </term> 464 <listitem> 465 <para> 466The cursor to be used for the grip when changing the boundary between 467two panes. These resources allow the cursors to be different 468depending on the orientation of the Paned widget. 469 </para> 470 </listitem> 471 </varlistentry> 472 <varlistentry> 473 <term> 474 <function>horizontalGripCursor</function> 475 </term> 476 <listitem> 477 <para> 478<!-- .br --> 479<!-- .ns --> 480 </para> 481 </listitem> 482 </varlistentry> 483 <varlistentry> 484 <term> 485 <function>verticalGripCursor</function> 486 </term> 487 <listitem> 488 <para> 489The cursor to be used for the grips when they are not active. These 490resources allow the cursors to be different depending on the 491orientation of the Paned widget. 492 </para> 493 </listitem> 494 </varlistentry> 495 <varlistentry> 496 <term> 497 <function>internalBorderColor</function> 498 </term> 499 <listitem> 500 <para> 501A pixel value which indexes the widget's colormap to derive the internal 502border color of the widget's window. The class name of this resource 503allows <emphasis remap='I'>Paned*BorderColor: blue</emphasis> to set the internal border color 504for the Paned widget. An optimization is invoked if 505<function>internalBorderColor</function> and <function>background</function> are the same, and the 506internal borders are not drawn. <function>internalBorderWidth</function> is still left 507between the panes, however. 508 </para> 509 </listitem> 510 </varlistentry> 511 <varlistentry> 512 <term> 513 <function>internalBorderWidth</function> 514 </term> 515 <listitem> 516 <para> 517The width of the internal borders. This is the amount of space left 518between the panes. The class name of this resource allows 519<emphasis remap='I'>Paned*BorderWidth: 3</emphasis> to set the internal border width for the 520Paned widget. 521 </para> 522 </listitem> 523 </varlistentry> 524 <varlistentry> 525 <term> 526 <function>leftCursor</function> 527 </term> 528 <listitem> 529 <para> 530<!-- .br --> 531<!-- .ns --> 532 </para> 533 </listitem> 534 </varlistentry> 535 <varlistentry> 536 <term> 537 <function>rightCursor</function> 538 </term> 539 <listitem> 540 <para> 541The cursor used to indicate which is the <emphasis remap='I'>important</emphasis> pane to resize 542when the Paned widget is oriented horizontally. 543 </para> 544 </listitem> 545 </varlistentry> 546 <varlistentry> 547 <term> 548 <function>lowerCursor</function> 549 </term> 550 <listitem> 551 <para> 552<!-- .br --> 553<!-- .ns --> 554 </para> 555 </listitem> 556 </varlistentry> 557 <varlistentry> 558 <term> 559 <function>upperCursor</function> 560 </term> 561 <listitem> 562 <para> 563The cursor used to indicate which is the <emphasis remap='I'>important</emphasis> pane to resize 564when the Paned widget is oriented vertically. 565<!-- .Mm --> 566<!-- .Nc --> 567This is not the same as the number of panes, since this also contains a 568grip for some of the panes, use <xref linkend='XawPanedGetNumSub' xrefstyle='select: title'/> to retrieve the 569number of panes. 570 </para> 571 </listitem> 572 </varlistentry> 573 <varlistentry> 574 <term> 575 <function>orientation</function> 576 </term> 577 <listitem> 578 <para> 579The orientation to stack the panes. This value can be either 580<function>XtorientVertical</function> or <function>XtorientHorizontal</function>. 581<indexterm><primary>XtorientVertical</primary></indexterm> 582<indexterm><primary>XtorientHorizontal</primary></indexterm> 583<indexterm><primary>conversions</primary><secondary>Orientation</secondary></indexterm> 584<!-- .Rs "vertical \fPand\fB horizontal" --> 585 </para> 586 </listitem> 587 </varlistentry> 588 <varlistentry> 589 <term> 590 <function>refigureMode</function> 591 </term> 592 <listitem> 593 <para> 594This resource allows pane layout to be suspended. If this value is 595<function>False</function>, then no layout actions will be taken. This may improve 596efficiency when adding or removing more than one pane from the Paned 597widget. 598<!-- .Sc --> 599<!-- .Se --> 600<!-- .Tr --> 601<!-- .Xy --> 602 </para> 603 </listitem> 604 </varlistentry> 605</variablelist> 606</para> 607</sect2> 608<sect2 id='Paned::Constraint_Resources'> 609<title>Constraint Resources</title> 610<para> 611<!-- .LP --> 612<indexterm><primary>Paned widget</primary><secondary>constraint resources</secondary></indexterm> 613Each child of the Paned widget may request special layout resources 614be applied to it. These <emphasis remap='I'>constraint</emphasis> resources allow the Paned 615widget's children to specify individual layout requirements. 616</para> 617<para> 618<!-- .LP --> 619<informaltable> 620 <tgroup cols='5' align='center'> 621 <colspec colname='c1'/> 622 <colspec colname='c2'/> 623 <colspec colname='c3'/> 624 <colspec colname='c4'/> 625 <colspec colname='c5'/> 626 <thead> 627 <row> 628 <entry>Name</entry> 629 <entry>Class</entry> 630 <entry>Type</entry> 631 <entry>Notes</entry> 632 <entry>Default Value</entry> 633 </row> 634 </thead> 635 <tbody> 636 <row> 637 <entry>allowResize</entry> 638 <entry>Boolean</entry> 639 <entry>Boolean</entry> 640 <entry></entry> 641 <entry>False</entry> 642 </row> 643 <row> 644 <entry>max</entry> 645 <entry>Max</entry> 646 <entry>Dimension</entry> 647 <entry></entry> 648 <entry>Infinity</entry> 649 </row> 650 <row> 651 <entry>min</entry> 652 <entry>Min</entry> 653 <entry>Dimension</entry> 654 <entry></entry> 655 <entry>Height of Grips</entry> 656 </row> 657 <row> 658 <entry>preferredPaneSize</entry> 659 <entry>PreferredPaneSize</entry> 660 <entry>Dimension</entry> 661 <entry></entry> 662 <entry>ask child</entry> 663 </row> 664 <row> 665 <entry>resizeToPreferred</entry> 666 <entry>Boolean</entry> 667 <entry>Boolean</entry> 668 <entry></entry> 669 <entry>False</entry> 670 </row> 671 <row> 672 <entry>showGrip</entry> 673 <entry>ShowGrip</entry> 674 <entry>Boolean</entry> 675 <entry></entry> 676 <entry>True</entry> 677 </row> 678 <row> 679 <entry>skipAdjust</entry> 680 <entry>Boolean</entry> 681 <entry>Boolean</entry> 682 <entry></entry> 683 <entry>False</entry> 684 </row> 685 <row> 686 <entry>_</entry> 687 </row> 688 </tbody> 689 </tgroup> 690</informaltable> 691<variablelist> 692 <varlistentry> 693 <term> 694 <function>allowResize</function> 695 </term> 696 <listitem> 697 <para> 698If this value is <function>False</function> the the Paned widget will disallow all 699geometry requests from this child. 700 </para> 701 </listitem> 702 </varlistentry> 703 <varlistentry> 704 <term> 705 <function>max</function> 706 </term> 707 <listitem> 708 <para> 709<!-- .br --> 710<!-- .ns --> 711 </para> 712 </listitem> 713 </varlistentry> 714 <varlistentry> 715 <term> 716 <function>min</function> 717 </term> 718 <listitem> 719 <para> 720The absolute maximum or minimum size for this pane. These values will 721never be overridden by the Paned widget. This may cause some panes to be 722pushed off the bottom (or right) edge of the paned widget. 723 </para> 724 </listitem> 725 </varlistentry> 726 <varlistentry> 727 <term> 728 <function>preferredPaneSize</function> 729 </term> 730 <listitem> 731 <para> 732Normally the paned widget makes a QueryGeometry call on a child to 733determine the preferred size of the child's pane. There are times 734when the application programmer or the user has a better idea of the 735preferred size of a pane. Setting this resource causes the value 736passed to be interpreted as the preferred size, in pixels, of this pane. 737 </para> 738 </listitem> 739 </varlistentry> 740 <varlistentry> 741 <term> 742 <function>resizeToPreferred</function> 743 </term> 744 <listitem> 745 <para> 746Determines whether or not to resize each pane to its preferred size 747when the Paned widget is resized. See <function>Layout Semantics</function> for details. 748 </para> 749 </listitem> 750 </varlistentry> 751 <varlistentry> 752 <term> 753 <function>showGrip</function> 754 </term> 755 <listitem> 756 <para> 757If <function>True</function> then a grip will be shown for this pane. The grip 758associated with a pane is either below or to the right of the pane. No 759grip is ever shown for the last pane. 760 </para> 761 </listitem> 762 </varlistentry> 763 <varlistentry> 764 <term> 765 <function>skipAdjust</function> 766 </term> 767 <listitem> 768 <para> 769This resource is used to determine which pane is forced to be resized. 770Setting this value to <function>True</function> makes this pane less likely to be 771forced to be resized. See <function>Layout Semantics</function> for details. 772 </para> 773 </listitem> 774 </varlistentry> 775</variablelist> 776</para> 777</sect2> 778<sect2 id='Paned::Layout_Semantics'> 779<title>Layout Semantics</title> 780<para> 781<!-- .LP --> 782<indexterm><primary>Paned widget</primary><secondary>layout semantics</secondary></indexterm> 783In order to make effective use of the Paned widget it is helpful to know 784the rules it uses to determine which child will be resized in any given 785situation. There are three rules used to determine which child is 786resized. While these rules are always the same, the panes that are 787searched can change depending upon what caused the relayout. 788</para> 789<para> 790<!-- .LP --> 791<!-- .sp --> 792<function>Layout Rules</function> 793<variablelist> 794 <varlistentry> 795 <term> 796 <function>1</function> 797 </term> 798 <listitem> 799 <para> 800Do not let a pane grow larger than its <function>max</function> or smaller than its 801<function>min</function>. 802 </para> 803 </listitem> 804 </varlistentry> 805 <varlistentry> 806 <term> 807 <function>2</function> 808 </term> 809 <listitem> 810 <para> 811Do not adjust panes with <function>skipAdjust</function> set. 812 </para> 813 </listitem> 814 </varlistentry> 815 <varlistentry> 816 <term> 817 <function>3</function> 818 </term> 819 <listitem> 820 <para> 821Do not adjust panes away from their preferred size, although moving one 822closer to its preferred size is fine. 823 </para> 824 </listitem> 825 </varlistentry> 826</variablelist> 827</para> 828<para> 829<!-- .LP --> 830When searching the children the Paned widget looks for panes that 831satisfy all the rules, and if unsuccessful then it eliminates rule 3 832and then 2. Rule 1 is always enforced. 833</para> 834<para> 835<!-- .LP --> 836If the relayout is due to a resize or change in management then the 837panes are searched from bottom to top. If the relayout is due to grip 838movement then they are searched from the grip selected in the direction 839opposite the pane selected. 840</para> 841<sect3 id="Resizing_Panes_from_a_Grip_Action"> 842<title>Resizing Panes from a Grip Action</title> 843<para> 844<!-- .LP --> 845The pane above the grip is resized by invoking the GripAction with 846<function>UpLeftPane</function> specified. The panes below the grip are each checked 847against all rules, then rules 2 and 1 and finally against rule 1 only. 848No pane above the chosen pane will ever be resized. 849</para> 850<para> 851<!-- .LP --> 852The pane below the grip is resized by invoking the GripAction with 853<function>LowRightPane</function> specified. The panes above the grip are each 854checked in this case. No pane below the chosen pane will ever be resized. 855</para> 856<para> 857<!-- .LP --> 858Invoking GripAction with <function>ThisBorderOnly</function> specified just moves the 859border between the panes. No other panes are ever resized. 860</para> 861</sect3> 862<sect3 id='Resizing_Panes_after_the_Paned_widget_is_resized'> 863<title>Resizing Panes after the Paned widget is resized.</title> 864<para> 865<!-- .LP --> 866When the Pane widget is resized it must determine a new size for each 867pane. There are two methods of doing this. The Paned widget can either 868give each pane its preferred size and then resize the panes to fit, or 869it can use the current sizes and then resize the panes to fit. The 870<function>resizeToPreferred</function> resource allows the application to tell the 871Paned widget whether to query the child about its preferred size 872(subject to the the <function>preferredPaneSize</function>) or to use the current size 873when refiguring the pane locations after the pane has been resized. 874</para> 875<para> 876<!-- .LP --> 877There is one special case. All panes assume they should resize to 878their preferred size until the Paned widget becomes visible to the user. 879</para> 880</sect3> 881<sect3 id="Managing_Children_and_Geometry_Management"> 882<title>Managing Children and Geometry Management</title> 883<para> 884<!-- .LP --> 885The Paned widget always resizes its children to their preferred sizes when 886a new child is managed, or a geometry management request is honored. 887The Paned widget will first attempt to resize itself to contain its 888panes exactly. If this is not possible then it will hunt through the 889children, from bottom to top (right to left), for a pane to resize. 890</para> 891</sect3> 892<sect3 id='Paned::Special_Considerations'> 893<title>Special Considerations</title> 894<para> 895<!-- .LP --> 896When a user resizes a pane with the grips, the Paned widget assumes that 897this new size is the preferred size of the pane. 898</para> 899</sect3> 900</sect2> 901<sect2 id="Grip_Translations"> 902<title>Grip Translations</title> 903<para> 904<!-- .LP --> 905The Paned widget has no action routines of its own, as all actions are 906handled through the grips. The grips are each assigned a default 907Translation table. 908</para> 909<para> 910<!-- .LP --> 911<!-- .sp --> 912<literallayout class="monospaced"> 913<!-- .TA .5i 2.25i --> 914<!-- .ta .5i 2.25i --> 915 <Btn1Down>: GripAction(Start, UpLeftPane) 916<indexterm><primary>GripAction</primary></indexterm> 917 <Btn2Down>: GripAction(Start, ThisBorderOnly) 918 <Btn3Down>: GripAction(Start, LowRightPane) 919 <Btn1Motion>: GripAction(Move, UpLeftPane) 920 <Btn2Motion>: GripAction(Move, ThisBorderOnly) 921 <Btn3Motion>: GripAction(Move, LowRightPane) 922 Any<BtnUp>: GripAction(Commit) 923</literallayout> 924<!-- .sp --> 925</para> 926<para> 927<!-- .LP --> 928The Paned widget interprets the <function>GripAction</function> as taking two arguments. 929<indexterm><primary>GripAction</primary></indexterm> 930The first argument may be any of the following: 931<variablelist> 932 <varlistentry> 933 <term> 934 <function>Start</function> 935 </term> 936 <listitem> 937 <para> 938Sets up the Paned widget for resizing and changes the cursor of the 939grip. The second argument determines which pane will be resized, and 940can take on any of the three values shown above. 941 </para> 942 </listitem> 943 </varlistentry> 944 <varlistentry> 945 <term> 946 <function>Move</function> 947 </term> 948 <listitem> 949 <para> 950The internal borders are drawn over the current pane locations to 951animate where the borders would actually be placed if you were to move 952this border as shown. The second argument must match the second argument 953that was passed to the <function>Start</function> action, that began this process. If 954these arguments are not passed, the behavior is undefined. 955 </para> 956 </listitem> 957 </varlistentry> 958 <varlistentry> 959 <term> 960 <function>Commit</function> 961 </term> 962 <listitem> 963 <para> 964This argument causes the Paned widget to commit the changes selected 965by the previously started action. The cursor is changed back to the 966grip's inactive cursor. No second argument is needed in this case. 967 </para> 968 </listitem> 969 </varlistentry> 970</variablelist> 971</para> 972</sect2> 973<sect2 id='Paned::Convenience_Routines'> 974<title>Convenience Routines</title> 975<para> 976<!-- .LP --> 977<indexterm><primary>Paned widget</primary><secondary>enable pane resizing</secondary></indexterm> 978<indexterm><primary>Paned widget</primary><secondary>disable pane resizing</secondary></indexterm> 979To enable or disable a child's request for pane resizing, 980use 981<function>XawPanedAllowResize :</function> 982<indexterm significance="preferred"><primary>XawPanedAllowResize</primary></indexterm> 983<funcsynopsis id='XawPanedAllowResize'> 984<funcprototype> 985 <funcdef>void<function> XawPanedAllowResize</function></funcdef> 986 <paramdef>Widget<parameter> w</parameter></paramdef> 987 <paramdef>Boolean<parameter> allow_resize</parameter></paramdef> 988</funcprototype> 989</funcsynopsis> 990<!-- .FN --> 991<variablelist> 992 <varlistentry> 993 <term> 994 <emphasis remap='I'>w</emphasis> 995 </term> 996 <listitem> 997 <para> 998Specifies the child pane. 999 </para> 1000 </listitem> 1001 </varlistentry> 1002 <varlistentry> 1003 <term> 1004 <emphasis remap='I'>allow_resize</emphasis> 1005 </term> 1006 <listitem> 1007 <para> 1008Specifies whether or not resizing requests for this child will be 1009granted by the Paned widget. 1010 </para> 1011 </listitem> 1012 </varlistentry> 1013</variablelist> 1014</para> 1015<para> 1016<!-- .LP --> 1017If allow_resize is <function>True</function>, the Paned widget allows geometry 1018requests from the child to change the pane's height. If allow_resize 1019is <function>False</function>, the Paned widget ignores geometry requests from the 1020child to change the pane's height. The default state is <function>True</function> 1021before the Pane is realized and <function>False</function> after it is realized. 1022This procedure is equivalent to changing the <function>allowResize</function> 1023constraint resource for the child. 1024</para> 1025<para> 1026<!-- .LP --> 1027<!-- .sp --> 1028<indexterm><primary>Paned widget</primary><secondary>change height settings</secondary></indexterm> 1029To change the minimum and maximum height settings for a pane, use 1030<function>XawPanedSetMinMax :</function> 1031<indexterm significance="preferred"><primary>XawPanedSetMinMax</primary></indexterm> 1032<funcsynopsis id='XawPanedSetMinMax'> 1033<funcprototype> 1034 <funcdef>void<function> XawPanedSetMinMax</function></funcdef> 1035 <paramdef>Widget<parameter> w</parameter></paramdef> 1036 <paramdef>intmin,<parameter> max</parameter></paramdef> 1037</funcprototype> 1038</funcsynopsis> 1039<!-- .FN --> 1040<variablelist> 1041 <varlistentry> 1042 <term> 1043 <emphasis remap='I'>w</emphasis> 1044 </term> 1045 <listitem> 1046 <para> 1047Specifies the child pane. 1048 </para> 1049 </listitem> 1050 </varlistentry> 1051 <varlistentry> 1052 <term> 1053 <emphasis remap='I'>min</emphasis> 1054 </term> 1055 <listitem> 1056 <para> 1057Specifies the new minimum height of the child, expressed in pixels. 1058 </para> 1059 </listitem> 1060 </varlistentry> 1061 <varlistentry> 1062 <term> 1063 <emphasis remap='I'>max</emphasis> 1064 </term> 1065 <listitem> 1066 <para> 1067Specifies new maximum height of the child, expressed in pixels. 1068 </para> 1069 </listitem> 1070 </varlistentry> 1071</variablelist> 1072</para> 1073<para> 1074<!-- .LP --> 1075This procedure is equivalent to setting the <function>min</function> and <function>max</function> 1076constraint resources for the child. 1077</para> 1078<para> 1079<!-- .LP --> 1080<!-- .sp --> 1081<indexterm><primary>Paned widget</primary><secondary>get height settings</secondary></indexterm> 1082To retrieve the minimum and maximum height settings for a pane, use 1083<function>XawPanedGetMinMax :</function> 1084<indexterm significance="preferred"><primary>XawPanedGetMinMax</primary></indexterm> 1085<funcsynopsis id='XawPanedGetMinMax'> 1086<funcprototype> 1087 <funcdef>void<function> XawPanedGetMinMax</function></funcdef> 1088 <paramdef>Widget<parameter> w</parameter></paramdef> 1089 <paramdef>int*min_return,<parameter> *max_return</parameter></paramdef> 1090</funcprototype> 1091</funcsynopsis> 1092<!-- .FN --> 1093<variablelist> 1094 <varlistentry> 1095 <term> 1096 <emphasis remap='I'>w</emphasis> 1097 </term> 1098 <listitem> 1099 <para> 1100Specifies the child pane. 1101 </para> 1102 </listitem> 1103 </varlistentry> 1104 <varlistentry> 1105 <term> 1106 <emphasis remap='I'>min_return</emphasis> 1107 </term> 1108 <listitem> 1109 <para> 1110Returns the minimum height of the child, expressed in pixels. 1111 </para> 1112 </listitem> 1113 </varlistentry> 1114 <varlistentry> 1115 <term> 1116 <emphasis remap='I'>max_return</emphasis> 1117 </term> 1118 <listitem> 1119 <para> 1120Returns the maximum height of the child, expressed in pixels. 1121 </para> 1122 </listitem> 1123 </varlistentry> 1124</variablelist> 1125</para> 1126<para> 1127<!-- .LP --> 1128This procedure is equivalent to getting the <function>min</function> and <function>max</function> 1129resources for this child child. 1130</para> 1131<para> 1132<!-- .LP --> 1133<!-- .sp --> 1134<indexterm><primary>Paned widget</primary><secondary>enable auto-reconfiguring</secondary></indexterm> 1135<indexterm><primary>Paned widget</primary><secondary>disable auto-reconfiguring</secondary></indexterm> 1136To enable or disable automatic recalculation of pane sizes and positions, 1137use 1138<function>XawPanedSetRefigureMode :</function> 1139<indexterm significance="preferred"><primary>XawPanedSetRefigureMode</primary></indexterm> 1140<funcsynopsis id='XawPanedSetRefigureMode'> 1141<funcprototype> 1142 <funcdef>void<function> XawPanedSetRefigureMode</function></funcdef> 1143 <paramdef>Widget<parameter> w</parameter></paramdef> 1144 <paramdef>Boolean<parameter> mode</parameter></paramdef> 1145</funcprototype> 1146</funcsynopsis> 1147<!-- .FN --> 1148<variablelist> 1149 <varlistentry> 1150 <term> 1151 <emphasis remap='I'>w</emphasis> 1152 </term> 1153 <listitem> 1154 <para> 1155Specifies the Paned widget. 1156 </para> 1157 </listitem> 1158 </varlistentry> 1159 <varlistentry> 1160 <term> 1161 <emphasis remap='I'>mode</emphasis> 1162 </term> 1163 <listitem> 1164 <para> 1165Specifies whether the layout of the Paned widget is enabled (<function>True</function>) 1166or disabled (<function>False</function>). 1167 </para> 1168 </listitem> 1169 </varlistentry> 1170</variablelist> 1171</para> 1172<para> 1173<!-- .LP --> 1174When making several changes to the children of a Paned widget 1175after the Paned has been realized, it is a good idea to disable 1176relayout until after all changes have been made. 1177</para> 1178<para> 1179<!-- .LP --> 1180<!-- .sp --> 1181<indexterm><primary>Paned widget</primary><secondary>getting the number of children</secondary></indexterm> 1182To retrieve the number of panes in a paned widget use 1183<xref linkend='XawPanedGetNumSub' xrefstyle='select: title'/>: 1184<indexterm significance="preferred"><primary>XawPanedGetNumSub</primary></indexterm> 1185<funcsynopsis id='XawPanedGetNumSub'> 1186<funcprototype> 1187 <funcdef>int<function> XawPanedGetNumSub</function></funcdef> 1188 <paramdef>Widget<parameter> w</parameter></paramdef> 1189</funcprototype> 1190</funcsynopsis> 1191<!-- .FN --> 1192<variablelist> 1193 <varlistentry> 1194 <term> 1195 <emphasis remap='I'>w</emphasis> 1196 </term> 1197 <listitem> 1198 <para> 1199Specifies the Paned widget. 1200 </para> 1201 </listitem> 1202 </varlistentry> 1203</variablelist> 1204</para> 1205<para> 1206<!-- .LP --> 1207This function returns the number of panes in the Paned widget. This is 1208<function>not</function> the same as the number of children, since the grips are also 1209children of the Paned widget. 1210 1211</para> 1212</sect2> 1213</sect1> 1214