[comp.windows.x] ProcessContext in X11R4 Xt library

matt@bacchus.esa.oz (Matt Atterbury) (05/09/91)

    [Sorry if this has been fixed in a fix we don't have].

    All the manuals I have [O'Reilly and X] say that you should use
    XtAppInitialize rather than XtInitialize, so I did. But there is
    one thing that XtInitialize does that XtAppInitialize doesn't do,
    and that is to set up the [single, static] process context's
    defaultAppContext field [this is used extensivley in the Xt
    library]. The symptom was that a home-grown widget's translation
    table was being 'handled' OK but the action table for it was being
    ignored - result: 'Warning: Actions not found:' error messages.

    1st Question) is this a problem in XtAppInitialize or in the widget?

    The before code I had was:

        XtToolkitInitialize();
***     app_context = XtCreateApplicationContext();
        display = XtOpenDisplay(app_context, ...);
        toplevel = XtAppCreateShell(NULL, ...);

    The after code is:

        extern XtAppContext _XtDefaultAppContext();

        XtToolkitInitialize();
***     app_context = _XtDefaultAppContext();
        display = XtOpenDisplay(app_context, ...);
        toplevel = XtAppCreateShell(NULL, ...);

    _XtDefaultAppContext() will create an app context if there isn't a
    default already, and returns the default app context. The actions
    problem has gone away. Note that I cannot use XtInitialize since I
    am opening a number of displays.

    2nd Question) assuming the widget is OK, what is the ideologically
                  correct way of getting the default app context set
                  up properly [_XtDefaultAppContext is supposedly an
                  internal Xt routine - it may go away?]?

    Any information/responses welcome. cheers ...
--
-------------------------------------------------------------------------------
Matt Atterbury [matt@bacchus.esa.oz.au]   Expert Solutions Australia, Melbourne
UUCP: ...!uunet!munnari!matt@bacchus.esa.oz.au            "klaatu barada nikto"
  or: ...!uunet!murtoa!bacchus.esa.oz.au!matt         "consider this a divorce"
ARPA: matt%bacchus.esa.oz.AU@uunet.UU.NET  "life? don't talk to me about life!"

swick@athena.mit.EDU (Ralph Swick) (05/09/91)

    The symptom was that a home-grown widget's translation
    table was being 'handled' OK but the action table for it was being
    ignored - result: 'Warning: Actions not found:' error messages.

Is your application (or the home-grown widget) still using XtAddActions
rather than XtAppAddActions?  (There's no good reason I can think of
for the widget to be registering actions this way, but it's a thought.)

The "default application context" is useful only for the compatibility
routines in Appendix C of the Xt spec.  If you use XtAppInitialize, as
you should, then you must not use any of the appendix C routines in the
following right-hand column:

	New			  Replaces

	XtAppMainLoop		  XtMainLoop
	XtAppNextEvent		  XtNextEvent
	XtAppProcessEvent	  XtProcessEvent
	XtAppPeekEvent		  XtPeekEvent
	XtAppPending		  XtPending
	XtAppAddInput		  XtAddInput
	XtAppAddTimeOut		  XtAddTimeOut
	XtAppAddWorkProc	  XtAddWorkProc
	XtAppCreateShell	  XtCreateApplicationShell
	XtAppAddActions		  XtAddActions
	XtAppSetSelectionTimeout  XtSetSelectionTimeout
	XtAppGetSelectionTimeout  XtGetSelectionTimeout