Get the child that's farthest back in a container
PtWidget_t *PtWidgetChildBack( PtWidget_t *widget );
This function returns a pointer to the child that's farthest back in the specified container widget. If widget doesn't have any children, the function returns NULL.
window = PtAppInit( NULL, NULL, NULL, 0, NULL ); pos.x = pos.y = 0; PtSetArg( &argt[0], Pt_ARG_POS, &pos, 0 ); PtSetArg( &argt[1], Pt_ARG_RESIZE_FLAGS, Pt_TRUE, Pt_RESIZE_XY_ALWAYS ); PtSetArg( &argt[2], Pt_ARG_GROUP_ORIENTATION, Pt_GROUP_HORIZONTAL, 0 ); group1 = PtCreateWidget( PtGroup, NULL, 3, &argt ); pos.x += 100; PtSetArg( &argt[1], Pt_ARG_RESIZE_FLAGS, Pt_TRUE, Pt_RESIZE_XY_ALWAYS ); PtSetArg( &argt[2], Pt_ARG_GROUP_ORIENTATION, Pt_GROUP_HORIZONTAL, 0 ); group2 = PtCreateWidget( PtGroup, window, 3, &argt ); PtSetArg( &argt[0], Pt_ARG_TEXT_STRING, "Group2 Child Back" ); PtCreateWidget( PtButton, NULL, 1, argt ); PtSetArg( &argt[0], Pt_ARG_TEXT_STRING, "Group2 Child Middle" ); PtCreateWidget( PtButton, NULL, 1, argt ); //Set the default parent to "group1" PtSetParentWidget( group1 ) PtSetArg( &argt[0], Pt_ARG_TEXT_STRING, "Group1 Child Back" ); PtCreateWidget( PtButton, NULL, 1, argt ); PtSetArg( &argt[0], Pt_ARG_TEXT_STRING, "Group1 Child Front" ); PtCreateWidget( PtButton, NULL, 1, argt ); PtSetArg( &argt[0], Pt_ARG_TEXT_STRING, "Group2 Child Front" ); PtCreateWidget( PtButton, group2, 1, argt ); // walk the children of group2 back to front PtSetArg( &argt[0], Pt_ARG_COLOR, Pg_BLUE, 0 ); for( wp = PtWidgetChildBack( pane2 ); wp; wp = PtWidgetBrotherInFront( wp ) ) { tmp = wp; if( PtWidgetIsClassMember( wp, PtLabel ) ) PtSetResources( wp, 1, argt ); } // move the frontmost widget to the back... PtWidgetToBack( tmp ); // force a display Update PtFlush(); // walk the children of group2 front to back for( wp = PtWidgetChildFront( pane2 ); wp; wp = PtWidgetBrotherBehind( wp ) ) { tmp = wp; if( PtWidgetIsClassMember( wp, PtLabel ) ) PtSetResources( wp, 1, argt ); } PtWidgetToFront( tmp ); if( group2 == PtWidgetParent( group1 ) ) // not true... PtDestroyWidget( group1 ); if( window == PtWidgetParent( group1 ) ) // true... PtUnrealizeWidget( group1 ); // removed from view without being destroyed. // Set color of group 2 family to Pg_BLUE PtSetArg( &argt, Pt_ARG_COLOR, Pg_BLUE, 0 ); for( wp = group2; wp;wp = PtWidgetFamily( group2, wp )) PtSetResources( wp, 1, argt ); // destroy group 2 and all its children PtDestroyWidget( group2 ); // force a display Update PtFlush() PtRealizeWidget( group1 ); // make group1 visible again. PtMainLoop();
Photon
Safety: | |
---|---|
Interrupt handler | No |
Signal handler | No |
Thread | No |
PtWidgetBrotherBehind(), PtWidgetBrotherInFront(), PtWidgetChildFront(), PtWidgetInsert(), PtWidgetParent(), PtWidgetToBack(), PtWidgetToFront()
PtWindowToBack() PtWindowToFront() in the Photon Widget Reference.
"Ordering widgets" in the Creating Widgets in Application Code chapter of the Photon Programmer's Guide