XtAddGrab 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]

XtAddGrab()							   XtAddGrab()

Name
  XtAddGrab - constrain or redirect user input to a modal widget.

Synopsis
  void XtAddGrab(w, exclusive, spring_loaded)
	 Widget w;
	 Boolean exclusive;
	 Boolean spring_loaded;

Inputs
  w	    Specifies  the  widget  that is to be made modal.  Must be of
	    class Core or any subclass thereof.

  exclusive Specifies whether user events  should  be  dispatched  exclu‐
	    sively to this widget or also to modal parent widgets.

  spring_loaded
	    Specifies  whether this widget was popped up because the user
	    pressed a pointer button.

Description
  XtAddGrab() makes a widget modal.  When a modal widget  exists,  XtDis‐
  patchEvent()	will  not  deliver events that occur outside of the modal
  widget (unless, perhaps, they occur in the modal widget's modal parent)
  or  will  redirect events that occur outside of the modal widget to the
  modal widget.

  A modal popup dialog box may itself have popup children,  and	 a  popup
  menu	may  have  submenus  that  popup.   A modal widget and all of its
  descendants are referred to as the modal  cascade.   If  the	exclusive
  argument  to	XtAddGrab() is True, then events should be delivered only
  to the specified widget, not to any previous widgets in the modal  cas‐
  cade.	  If  it is False, then events will be delivered to the specified
  widget and any ancestors in the modal cascade until one is  found  that
  has exclusive	 True.

  Some	popups	(menus,	 for example) popup when the user presses a mouse
  button, and must pop down when the user releases that button,	 even  if
  it  is  released  outside of the popup.  This sort of popup should call
  XtAddGrab() with  the	 spring_loaded	argument  set  to  True.   XtDis‐
  patchEvent()	will  dispatch	key  and button events to a spring-loaded
  popup regardless of where those events occur in the application.   Note
  that if spring_loaded is True, then exclusive must also be True.

Usage
  You  do  not often need to call XtAddGrab() explicitly.  XtPopup() will
  pop up a dialog box and call XtAddGrab() appropriately, and the  prede‐
  fined	 callback procedures XtCallbackExclusive(), XtCallbackNone(), and
  XtCallbackNonexclusive() will do the same and are suitable  for  regis‐
  tering   on	widget	callback  lists.   The	predefined  action  named
  XtMenuPopup will pop up  a  spring-loaded  widget  and  can  be  called
  directly from a translation table.

  If  you  call	 XtAddGrab() then you should call XtRemoveGrab() when you
  are done with your modal widget.

  Note that XtAddGrab() does not issue an X button or key grab as XtGrab‐
  Button() and XtGrabKey() do (although there is a button grab implicitly
  made while any mouse button is held down over a popup menu,  for  exam‐
  ple).	 Its name refers to the fact that it uses event remapping to sim‐
  ulate the effect of a grab without locking out input to other	 applica‐
  tions running on the same display.

Background
  Modal	 widgets are widgets that, except for the input directed to them,
  lock out user input to the application.

  When a modal menu or modal dialog box is  popped  up	using  XtPopup(),
  user	events (keyboard and pointer events) that occur outside the modal
  widget should be delivered to the modal widget or ignored.  In no  case
  will user events be delivered to a widget outside the modal widget.

  Menus	 can  pop up submenus, and dialog boxes can pop up further dialog
  boxes, to create a popup cascade.  In this case,  user  events  may  be
  delivered to one of several modal widgets in the cascade.

  Display-related events should be delivered outside the modal cascade so
  that exposure events and the like keep the application's display up-to-
  date.	  Any event that occurs within the cascade is delivered as usual.
  The user events delivered to the most recent spring-loaded shell in the
  cascade when they occur outside the cascade are called remap events and
  are KeyPress, KeyRelease, ButtonPress,  and  ButtonRelease.	The  user
  events ignored when they occur outside the cascade are MotionNotify and
  EnterNotify.	All other events are delivered normally.  In  particular,
  note	that  this  is	one  way in which widgets can receive LeaveNotify
  events without first receiving EnterNotify events; they should be  pre‐
  pared	 to  deal with this, typically by ignoring any unmatched LeaveNo‐
  tify events.

  XtAddGrab() appends the widget to the modal  cascade	and  checks  that
  exclusive  is	 True if spring_loaded is True.	 If this condition is not
  met, XtAddGrab() generates a warning message.

  The modal cascade is used by XtDispatchEvent() when it  tries	 to  dis‐
  patch	 a  user  event.  When at least one modal widget is in the widget
  cascade, XtDispatchEvent() first determines  if  the	event  should  be
  delivered.   It starts at the most recent cascade entry and follows the
  cascade up to and including the most recent cascade  entry  added  with
  the exclusive parameter True.

  This	subset	of  the modal cascade along with all descendants of these
  widgets comprise the active subset.  User events that occur outside the
  widgets  in this subset are ignored or remapped.  Modal menus with sub‐
  menus generally add a submenu widget	to  the	 cascade  with	exclusive
  False.  Modal dialog boxes that need to restrict user input to the most
  deeply nested dialog box add a subdialog widget  to  the  cascade  with
  exclusive  True.   User  events that occur within the active subset are
  delivered to the appropriate widget, which is usually a child	 or  fur‐
  ther descendant of the modal widget.

  Regardless  of  where	 in  the application they occur, remap events are
  always delivered to the most recent widget in the active subset of  the
  cascade  registered with spring_loaded True, if any such widget exists.
  If the event occurred in the active subset of the cascade  but  outside
  the  spring-loaded widget, it is delivered normally before being deliv‐
  ered also to the spring-loaded widget.  Regardless of where it is  dis‐
  patched, the Intrinsics do not modify the contents of the event.

See Also
  XtCallbackExclusive(1), XtCallbackNone(1), XtCallbackNonexclusive(1),
  XtCallbackPopdown(1), XtCreatePopupShell(1), XtDispatchEvent(1),
  XtMenuPopup(1), XtPopdown(1), XtPopup(1), XtRemoveGrab(1).

Xt - Pop Ups							   XtAddGrab()
[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