/* $Header: /cvsroot/lesstif/lesstif/test/Xm/scrolledwindow/test10.c,v 1.7 2002/05/01 15:27:19 amai Exp $ */ /* ** Generated by X-Designer ** traverse obscured */ /* **LIBS: -lXm -lXt -lX11 */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../../common/Test.h" extern void traverse_obscured (); extern Boolean aardvarkConverter (); extern Boolean objStringConverter (); Widget appshell = (Widget) NULL; Widget form = (Widget) NULL; Widget scrollwin = (Widget) NULL; Widget hsb = (Widget) NULL; Widget vsb = (Widget) NULL; Widget rowcol = (Widget) NULL; Widget button1 = (Widget) NULL; Widget button2 = (Widget) NULL; Widget button3 = (Widget) NULL; Widget label = (Widget) NULL; void traverse_obscured(w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { XmScrollVisible(w, ((XmTraverseObscuredCallbackStruct *) call_data)->traversal_destination, 0, 0); } void create_appshell (display, app_name, app_argc, app_argv) Display *display; char *app_name; int app_argc; char **app_argv; { Widget children[3]; /* Children to manage */ Arg al[64]; /* Arg List */ register int ac = 0; /* Arg Count */ XmString xmstrings[16]; /* temporary storage for XmStrings */ XtSetArg(al[ac], XmNallowShellResize, TRUE); ac++; XtSetArg(al[ac], XmNtitle, "Automatic Traversal to Obscured Widgets in Scrolled Window"); ac++; XtSetArg(al[ac], XmNargc, app_argc); ac++; XtSetArg(al[ac], XmNargv, app_argv); ac++; appshell = XtAppCreateShell ( app_name, "XApplication", applicationShellWidgetClass, display, al, ac ); ac = 0; XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++; XtSetArg(al[ac], XmNhorizontalSpacing, 10); ac++; XtSetArg(al[ac], XmNverticalSpacing, 10); ac++; form = XmCreateForm ( appshell, "form", al, ac ); ac = 0; XtSetArg(al[ac], XmNscrollingPolicy, XmAUTOMATIC); ac++; scrollwin = XmCreateScrolledWindow ( form, "scrollwin", al, ac ); ac = 0; XtSetArg(al[ac], XmNhorizontalScrollBar, &hsb ); ac++; XtSetArg(al[ac], XmNverticalScrollBar, &vsb ); ac++; XtGetValues(scrollwin, al, ac ); ac = 0; XtSetArg(al[ac], XmNorientation, XmHORIZONTAL); ac++; rowcol = XmCreateRowColumn ( scrollwin, "rowcol", al, ac ); ac = 0; button1 = XmCreatePushButton ( rowcol, "button1", al, ac ); button2 = XmCreatePushButton ( rowcol, "button2", al, ac ); button3 = XmCreatePushButton ( rowcol, "button3", al, ac ); xmstrings[0] = XmStringCreateLtoR("Use arrow keys to traverse between buttons.\nTraversing to an obscured button will scroll the window to reveal it.", (XmStringCharSet)XmFONTLIST_DEFAULT_TAG); XtSetArg(al[ac], XmNlabelString, xmstrings[0]); ac++; label = XmCreateLabel ( form, "label", al, ac ); ac = 0; XmStringFree ( xmstrings [ 0 ] ); XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(al[ac], XmNtopWidget, label); ac++; XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++; XtSetValues ( scrollwin,al, ac ); ac = 0; XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetValues ( label,al, ac ); ac = 0; XtAddCallback (scrollwin, XmNtraverseObscuredCallback, traverse_obscured,NULL); children[ac++] = button1; children[ac++] = button2; children[ac++] = button3; XtManageChildren(children, ac); ac = 0; children[ac++] = rowcol; XtManageChildren(children, ac); { unsigned char policy; XtVaGetValues(scrollwin, XmNscrollBarDisplayPolicy, &policy, NULL); printf("scrollBarDisplayPolicy %s\n", policy == XmSTATIC ? "XmSTATIC" : "XmAS_NEEDED"); } ac = 0; XmScrolledWindowSetAreas(scrollwin, hsb, vsb, rowcol ); { unsigned char policy; XtVaGetValues(scrollwin, XmNscrollBarDisplayPolicy, &policy, NULL); printf("scrollBarDisplayPolicy %s\n", policy == XmSTATIC ? "XmSTATIC" : "XmAS_NEEDED"); } children[ac++] = scrollwin; children[ac++] = label; XtManageChildren(children, ac); ac = 0; XtManageChild ( form); XtAddCallback(button1, XmNactivateCallback, XdbPrintTreeCB, (XtPointer)form); } XtAppContext app_context; Display *display; /* Display */ int main (argc,argv) int argc; char **argv; { XtSetLanguageProc ( (XtAppContext) NULL, (XtLanguageProc) NULL, (XtPointer) NULL ); XtToolkitInitialize (); app_context = XtCreateApplicationContext (); display = XtOpenDisplay (app_context, NULL, argv[0], "XApplication", NULL, 0, &argc, argv); if (!display) { printf("%s: can't open display, exiting...\n", argv[0]); exit (-1); } create_appshell ( display, argv[0], argc, argv ); XtRealizeWidget (appshell); { static XtWidgetGeometry Expected[] = { CWWidth | CWHeight , 508, 524, 428, 150, 0,0,0, /* form */ CWWidth | CWHeight | CWX | CWY, 10, 50, 100, 100, 0,0,0, /* scrollwin */ CWWidth | CWHeight | CWX | CWY, 4, 2, 92, 71, 0,0,0, /* ScrolledWindowClipWindow */ CWWidth | CWHeight | CWX | CWY, 0, 0, 174, 31, 0,0,0, /* rowcol */ CWWidth | CWHeight | CWX | CWY, 3, 3, 54, 25, 0,0,0, /* button1 */ CWWidth | CWHeight | CWX | CWY, 60, 3, 54, 25, 0,0,0, /* button2 */ CWWidth | CWHeight | CWX | CWY, 117, 3, 54, 25, 0,0,0, /* button3 */ CWWidth | CWHeight | CWX | CWY, 100, 0, 19, 100, 0,0,0, /* VertScrollBar */ CWWidth | CWHeight | CWX | CWY, 0, 81, 100, 19, 0,0,0, /* HorScrollBar */ CWWidth | CWHeight | CWX | CWY, 10, 10, 418, 30, 0,0,0, /* label */ }; LessTifTestSetSlop(appshell, 2); PrintDetails(appshell,Expected); }; LessTifTestMainLoop(appshell); exit (0); }