/* Written by Paula Ferguson.
* Copyright 1994, O'Reilly & Associates, Inc.
* Permission to use, copy, and modify this program without
* restriction is hereby granted, as long as this copyright
* notice appears in each copy of the program source code.
* This program is freely distributable without licensing fees and
* is provided without guarantee or warrantee expressed or implied.
* This program is -not- in the public domain.
*/
/* traversal.c -- demonstrate keyboard traversal in a ScrolledWindow
* using the XmNtraverseObscuredCallback.
*/
#include <Xm/PushB.h>
#include <Xm/ToggleB.h>
#include <Xm/ScrolledW.h>
#include <Xm/RowColumn.h>
main(argc, argv)
int argc;
char *argv[];
{
Widget toplevel, sw, rc;
XtAppContext app;
void traverse();
int i;
char name[10];
XtSetLanguageProc (NULL, NULL, NULL);
toplevel = XtVaAppInitialize (&app, "Demos", NULL, 0,
&argc, argv, NULL, NULL);
sw = XtVaCreateManagedWidget ("scrolled_w",
xmScrolledWindowWidgetClass, toplevel,
XmNscrollingPolicy, XmAUTOMATIC,
NULL);
XtAddCallback (sw, XmNtraverseObscuredCallback, traverse, NULL);
/* RowColumn is the work window for the widget */
rc = XtVaCreateWidget ("rc",
xmRowColumnWidgetClass, sw,
XmNorientation, XmHORIZONTAL,
XmNpacking, XmPACK_COLUMN,
XmNnumColumns, 10,
NULL);
for ( i = 0; i < 10; i++ ) {
sprintf (name, "Toggle %d", i);
XtVaCreateManagedWidget (name, xmToggleButtonWidgetClass, rc, NULL);
sprintf (name, "Button %d", i);
XtVaCreateManagedWidget (name, xmPushButtonWidgetClass, rc, NULL);
}
XtManageChild (rc);
XtRealizeWidget (toplevel);
XtAppMainLoop (app);
}
void
traverse(widget, client_data, call_data)
Widget widget;
XtPointer client_data;
XtPointer call_data;
{
XmTraverseObscuredCallbackStruct *cbs =
(XmTraverseObscuredCallbackStruct *) call_data;
XmScrollVisible (widget, cbs->traversal_destination, 10, 10);
}