XtCallbackD man page on HP-UX

Man page or keyword search:  
man Server   10987 pages
apropos Keyword Search (all sections)
Output format
HP-UX logo
[printable version]

XtCallbackProc()					      XtCallbackProc()

Name
  XtCallbackProc - interface definition for callback procedure.

Synopsis
  typedef void (*XtCallbackProc)(Widget, XtPointer, XtPointer);
	 Widget w;
	 XtPointer client_data;
	 XtPointer call_data;

Inputs
  w	    Specifies the widget for which the callback is registered.

  client_data
	    Specifies the data that was registered with this callback.

  call_data Specifies  data  passed by the widget; its type is defined by
	    the particular callback list of the particular widget class.

Description
  XtCallbackProc is the type of all  procedures	 registered  on	 callback
  lists	 with  XtAddCallback() or XtAddCallbacks().  A callback procedure
  is called when a widget calls XtCallCallbacks() or XtCallCallbackList()
  to  invoke  all  the procedures that have been registered on one of its
  callback lists.  Most callback lists are invoked from an action  proce‐
  dure	in  response to an event or series of events, as when an Xaw Com‐
  mand widget is clicked on, or when an Xaw Scrollbar widget is scrolled.

  An XtCallbackProc takes three arguments:

  ·  The first argument is the widget that triggered  the  callback:  the
     widget  for  which the callback procedure was registered.	You would
     use the value of this argument in your callback function if you reg‐
     istered  the  same function as a callback for two different widgets,
     and if you wanted to distinguish in the callback which widget called
     it,  or you would use it if the purpose of the callback were to per‐
     form some operation on the widget itself.

  ·  The second argument, client_data, is whatever value  was  passed  as
     the  last	argument  of XtAddCallback().  client_data provides a way
     for the client registering the callback also to register  data  that
     the  callback  procedure  will  need.  This may be data of any type,
     cast to an XtPointer when registered, and cast back to  the  desired
     type  within the callback procedure.  Generally, callback procedures
     should be passed whatever data they  are  to  operate  on	as  their
     client_data;  if  this is not done, the callback procedure will have
     to rely on global variables.

  ·  The third argument, call_data, is data supplied by the widget.   The
     argument  is  of  type  XtPointer,	 but  the actual type of the data
     depends on the particular widget class, and  the  callback	 list  of
     that  widget.   Some  widgets  pass no data in this argument, others
     pass a single scalar type, and others pass a pointer to a	structure
     of some type.  The Xaw Command widget doesn't provide any call_data,
     but the Xaw Scroll widget, for  example,  passes  back  the  current
     position  of  the	scrollbar.  The documentation for the widget will
     specify the contents of this argument if it is used.  The	call_data
     argument  may  not contain all the relevant information that a call‐
     back procedure might need.	 Callback procedures can also use  XtGet‐
     Values()  or  other  functions  to obtain more information about the
     state of the widget.

  See the "Background" section below for more information about register‐
  ing callback procedures and about callback lists.

Usage
  Almost  every application will define and register a number of callback
  procedures.  Once you have created the widgets that make up your appli‐
  cation's  interface and called XtAppMainLoop(), it is the callback pro‐
  cedures that you have registered that do all the  processing	for  your
  application.

  Action  procedures and event handlers are other ways of having a proce‐
  dure invoked when certain events occur, but are both	lower  level  and
  far less commonly used than callback procedures.  See XtAppAddActions()
  and XtAddEventHandler().

  You can also register procedures to be called when the  application  is
  idle,	 when  a timeout expires, or when there is input available from a
  source other than the X server.  This is done with  XtAppAddWorkProc(),
  XtAppAddTimeOut(),  and XtAppAddInput().  The procedures registered are
  similar in concept to callback procedures, but are not of type  XtCall‐
  backProc.

  Note that not all callbacks are called in response to user events.  The
  XtNdestroyCallback list of all widgets and objects is invoked	 when  an
  object is destoyed, for example, and the XtNpopupCallback list of Shell
  widgets is called just before the shell widget is popped up, whether or
  not a user event directly triggered the popup.

  If  any of the arguments are unused in your callback procedure, use the
  /* ARGSUSED */ comment to avoid warnings from lint.	For  ANSI-C  type
  checking,  you  should  declare your callbacks with all three arguments
  even if some are unused.  Note that you can use procedures that are not
  of  type XtCallbackProc (such as XtUnmanageChild(), for example) if you
  cast those procedures to type XtCallbackProc when you register them.

Example
  The following callback procedure is from the editres client:

     /* ARGSUSED */
     void
     PannerCallback(w, closure, report_ptr)
     Widget w;
     XtPointer closure, report_ptr;
     {
	 Arg args[2];
	 XawPannerReport *report = (XawPannerReport *) report_ptr;

	 if (global_tree_info == NULL)
	     return;

	 XtSetArg (args[0], XtNx, -report->slider_x);
	 XtSetArg (args[1], XtNy, -report->slider_y);

	 XtSetValues(global_tree_info->tree_widget, args, TWO);
     }

  It is registered by editres on the XtNreportCallback list of the widget
  panner, and is registered with another widget, porthole as client_data.

     XtAddCallback(panner, XtNreportCallback, PannerCallback, (XtPointer) porthole);

Background
  Whenever  a  client  wants to pass a callback list as an argument in an
  XtCreateWidget(), XtSetValues(), or XtGetValues() call, it should spec‐
  ify the address of a NULL-terminated array of type XtCallbackList.

  When a callback procedure, or list of callback procedures, is passed as
  a resource argument, Xt constructs an internal data structure	 for  the
  callback   list.   Subsequently,  callback  lists  cannot  be	 queried.
  Because Xt doesn't support  a	 string-to-callback  resource  converter,
  callbacks  cannot be specified in resource files. The internal form can
  only be accessed by the Intrinsics  functions	 XtAddCallback(),  XtAdd‐
  Callbacks(),	 XtRemoveCallback(),   XtRemoveCallbacks(),   XtCallCall‐
  backs(),  XtCallCallbackList(),  and	XtHasCallbacks().    Furthermore,
  since	 callback  lists  are handled specially by the Intrinsics, widget
  procedures should not allocate memory	 for  callback	lists  passed  as
  resources.   Unlike  other  resources,  a  widget's initialize() method
  should not attempt to make copies of resources of type XtRCallback.

  For the Intrinsics to find and correctly handle  callback  lists,  they
  must	be  declared  with  a resource type of XtRCallback.  The internal
  representation of a callback list is implementation-dependent;  widgets
  may  make  no assumptions about the value stored in this resource if it
  is non-NULL.	Except to compare the value to NULL (which is  equivalent
  to  XtCallbackHasNone returned by XtHasCallbacks()), access to callback
  list resources must be made through other Intrinsics procedures.

Structures
  The XtCallbackRec structure and the XtCallbackList types are defined as
  follows:

     typedef struct _XtCallbackRec {
	 XtCallbackProc	 callback;
	 XtPointer	 closure;
     } XtCallbackRec, *XtCallbackList;

See Also
  XtAddCallback(1), XtAddCallbacks(1), XtCallCallbacks(1), XtHasCall‐
  backs(1), XtRemoveCallback(1), XtRemoveCallbacks(1).

Xt - Callbacks						      XtCallbackProc()
[top]

List of man pages available for HP-UX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net