XmDragContext(3)


NAME

   XmDragContext  ---  The  DragContext widget class "XmDragContext" "widget
   class" "DragContext"

SYNOPSIS

   #include <Xm/DragDrop.h>

DESCRIPTION

   DragContexts are special widgets used in drag and drop transactions.  A
   DragContext  is  implemented  as  a  widget,  but  a  client  does  not
   explicitly create a DragContext widget. Instead, a client  initiates  a
   drag  and  drop  transaction  by  calling XmDragStart, and this routine
   initializes and  returns  a  DragContext  widget.  There  is  a  unique
   DragContext  for  each  drag operation. The toolkit frees a DragContext
   when a transaction is complete; therefore,  an  application  programmer
   should not explicitly destroy a DragContext.

   Initiator and receiver clients both use DragContexts to track the state
   of a transaction. When the initiator and receiver of a transaction  are
   in  the  same client, they share the same DragContext instance. If they
   are in different clients, there are two separate DragContexts. In  this
   case,  the  initiator  calls  XmDragStart  and  the  toolkit provides a
   DragContext for the receiver client. The only  resources  pertinent  to
   the  receiver  are  XmNexportTargets and XmNnumExportTargets. These can
   both be passed as  arguments  to  the  XmDropSiteRetrieve  function  to
   obtain information about the current drop site.

   In  general,  in order to receive data, a drop site must share at least
   one target type and  operation  in  common  with  a  drag  source.  The
   DragContext   resource,   XmNexportTargets,  identifies  the  selection
   targets for the drag source. These export targets are compared with the
   XmNimportTargets   resource   list  specified  by  a  drop  site.   The
   DragContext   resource,   XmNdragOperations,   identifies   the   valid
   operations that can be applied to the source data by the initiator. The
   drop  site  counterpart  resource   is   XmNdropSiteOperations,   which
   indicates a drop site's supported operations.

   A  client  uses  DragIcon  widgets  to  define  the drag-over animation
   effects  associated  with  a  given  drag  and  drop  transaction.   An
   initiator  specifies a set of drag icons, selects a blending model, and
   sets  foreground  and  background  cursor   colors   with   DragContext
   resources.

   The type of drag-over visual used to represent a drag operation depends
   on the drag protocol style. In preregister mode, the server is grabbed,
   and  either  a cursor or a pixmap may be used as a drag-over visual. In
   dynamic mode, drag-over visuals must be implemented with the X  cursor.
   If  the  resulting  drag  protocol  style  is Drop Only or None and the
   XmNdragInitiatorProtocolStyle        is        XmDRAG_DYNAMIC        or
   XmDRAG_PREFER_DYNAMIC,  then  a  dynamic visual style (cursor) is used.
   Otherwise, a preregister visual style is used.

   Classes
   DragContext inherits behavior and resources from Core.

   The class pointer is xmDragContextClass.

   The class name is XmDragContext.

   New Resources
   The following table defines a set  of  widget  resources  used  by  the
   programmer  to  specify  data. The programmer can also set the resource
   values for the inherited classes to set attributes for this widget.  To
   reference  a  resource by name or by class in a .Xdefaults file, remove
   the XmN or XmC prefix and use the remaining letters. To specify one  of
   the  defined  values for a resource in a .Xdefaults file, remove the Xm
   prefix and use the remaining letters (in either lowercase or uppercase,
   but  include  any  underscores  between words). The codes in the access
   column indicate if the given resource can be set at creation time  (C),
   set by using XtSetValues (S), retrieved by using XtGetValues (G), or is
   not applicable (N/A).

   
                                                XmDragContext Resource Set                                             
   Name                         Class                   Type                        Default                    Access 
   
   XmNblendModel                XmCBlendModel           unsigned char               XmBLEND_ALL                CG     
   
   XmNclientData                XmCClientData           XtPointer                   NULL                       CSG    
   
   XmNconvertProc               XmCConvertProc          XtConvertSelectionIncrProc  NULL                       CSG    
   
   XmNcursorBackground          XmCCursorBackground     Pixel                       dynamic                    CSG    
   
   XmNcursorForeground          XmCCursorForeground     Pixel                       dynamic                    CSG    
   
   XmNdragDropFinishCallback    XmCCallback             XtCallbackList              NULL                       CSG    
   
   XmNdragMotionCallback        XmCCallback             XtCallbackList              NULL                       C      
   
   XmNdragOperations            XmCDragOperations       unsigned char               XmDROP_COPY | XmDROP_MOVE  C      
   
   XmNdropFinishCallback        XmCCallback             XtCallbackList              NULL                       C      
   
   XmNdropSiteEnterCallback     XmCCallback             XtCallbackList              NULL                       C      
   
   XmNdropSiteLeaveCallback     XmCCallback             XtCallbackList              NULL                       C      
   
   XmNdropStartCallback         XmCCallback             XtCallbackList              NULL                       C      
   
   XmNexportTargets             XmCExportTargets        Atom *                      NULL                       CSG    
   
   XmNincremental               XmCIncremental          Boolean                     False                      CSG    
   
   XmNinvalidCursorForeground   XmCCursorForeground     Pixel                       dynamic                    CSG    
   
   XmNnoneCursorForeground      XmCCursorForeground     Pixel                       dynamic                    CSG    
   
   XmNnumExportTargets          XmCNumExportTargets     Cardinal                    0                          CSG    
   
   XmNoperationChangedCallback  XmCCallback             XtCallbackList              NULL                       C      
   
   XmNoperationCursorIcon       XmCOperationCursorIcon  Widget                      dynamic                    CSG    
   
   XmNsourceCursorIcon          XmCSourceCursorIcon     Widget                      dynamic                    CSG    
   
   XmNsourcePixmapIcon          XmCSourcePixmapIcon     Widget                      dynamic                    CSG    
   
   XmNstateCursorIcon           XmCStateCursorIcon      Widget                      dynamic                    CSG    
   
   XmNtopLevelEnterCallback     XmCCallback             XtCallbackList              NULL                       C      
   
   XmNtopLevelLeaveCallback     XmCCallback             XtCallbackList              NULL                       C      
   
   XmNvalidCursorForeground     XmCCursorForeground     Pixel                       dynamic                    CSG    
   
   
   XmNblendModel
             Specifies which  combination  of  DragIcons  are  blended  to
             produce a drag-over visual.

             XmBLEND_ALL
                       Blends  all  three DragIcons: the source, state and
                       operation icons.  The icons are layered from top to
                       bottom  with  the  operation  icon  on  top and the
                       source icon on the bottom.  The hotspot is  derived
                       from the state icon.

             XmBLEND_STATE_SOURCE
                       Blends the state and source icons only. The hotspot
                       is derived from the state icon.

             XmBLEND_JUST_SOURCE
                       Specifies that only the source icon is used,  which
                       the initiator updates as required.

             XmBLEND_NONE
                       Specifies  that  no  drag-over visual is generated.
                       The client tracks  the  drop  site  status  through
                       callback routines and updates the drag-over visuals
                       as necessary.

   XmNclientData
             Specifies the client data to be passed to XmNconvertProc when
             it is invoked.

   XmNconvertProc
             If  XmNincremental  is  True,  specifies  a procedure of type
             XtConvertSelectionIncrProc that converts the source  data  to
             the  format(s)  requested by the receiver client.  The widget
             argument passed to this procedure is the DragContext  widget.
             The  selection atom passed is _MOTIF_DROP.  If XmNincremental
             is False, the procedure  is  an  XtConvertSelectionProc,  and
             should  ignore  the  max_length,  client_data, and request_id
             arguments and should handle the conversion atomically.   Data
             returned  by XmNconvertProc must be allocated using XtMalloc,
             and will be freed automatically  by  the  toolkit  after  the
             transfer.  For additional information on selection conversion
             procedures, see X Toolkit IntrinsicsC Language Interface.

   XmNcursorBackground
             Specifies the background pixel value of the cursor.

   XmNcursorForeground
             Specifies the foreground pixel value of the cursor  when  the
             state  icon  is  not  blended.  This resource defaults to the
             foreground color of the  widget  passed  to  the  XmDragStart
             function.

   XmNdragDropFinishCallback
             Specifies  the  list  of  callbacks  that are called when the
             transaction is completed. The type  of  the  structure  whose
             address     is     passed     to     this     callback     is
             XmDragDropFinishCallbackStruct.  The  reason  sent   by   the
             callback is XmCR_DRAG_DROP_FINISH.

   XmNdragMotionCallback
             Specifies  the  list  of  callbacks that are invoked when the
             pointer moves.  The type of structure whose address is passed
             to  this  callback  is XmDragMotionCallbackStruct. The reason
             sent by the callback is XmCR_DRAG_MOTION.

   XmNdragOperations
             Specifies the set of  valid  operations  associated  with  an
             initiator  client for a drag transaction.  This resource is a
             bit mask that is formed by  combining  one  or  more  of  the
             following  values using a bitwise operation such as inclusive
             OR (|): XmDROP_COPY,  XmDROP_LINK,  XmDROP_MOVE.   The  value
             XmDROP_NOOP  for  this  resource indicates that no operations
             are valid.  For Text and TextField widgets, this resource  is
             set to XmDROP_COPY | XmDROP_MOVE; for List widgets, it is set
             to XmDROP_COPY.

   XmNdropFinishCallback
             Specifies the list of callbacks that  are  invoked  when  the
             drop is completed. The type of the structure whose address is
             passed to this callback  is  XmDropFinishCallbackStruct.  The
             reason sent by the callback is XmCR_DROP_FINISH.

   XmNdropSiteEnterCallback
             Specifies  the  list  of  callbacks that are invoked when the
             pointer enters a drop site. The type of the  structure  whose
             address     is     passed     to     this     callback     is
             XmDropSiteEnterCallbackStruct.  The  reason   sent   by   the
             callback is XmCR_DROP_SITE_ENTER.

   XmNdropSiteLeaveCallback
             Specifies  the  list  of  callbacks that are invoked when the
             pointer leaves a drop site. The type of the  structure  whose
             address     is     passed     to     this     callback     is
             XmDropSiteLeaveCallbackStruct.  The  reason   sent   by   the
             callback is XmCR_DROP_SITE_LEAVE.

   XmNdropStartCallback
             Specifies  the list of callbacks that are invoked when a drop
             is initiated. The type of  the  structure  whose  address  is
             passed  to  this  callback  is XmDropStartCallbackStruct. The
             reason sent by the callback is XmCR_DROP_START.

   XmNexportTargets
             Specifies the list  of  target  atoms  associated  with  this
             source.   This resource identifies the selection targets this
             source can be converted to.

   XmNincremental
             Specifies a Boolean value that indicates whether the transfer
             on  the  initiator  side  uses  the  Xt incremental selection
             transfer  mechanism  described  in  X  Toolkit   IntrinsicsC
             Language Interface.  If the value is True, the initiator uses
             incremental transfer; if the value is  False,  the  initiator
             uses atomic transfer.

   XmNinvalidCursorForeground
             Specifies  the  foreground pixel value of the cursor when the
             state is invalid. This resource defaults to the value of  the
             XmNcursorForeground resource.

   XmNnoneCursorForeground
             Specifies  the  foreground pixel value of the cursor when the
             state is none. This resource defaults to  the  value  of  the
             XmNcursorForeground resource.

   XmNnumExportTargets
             Specifies  the  number  of  entries  in  the  list  of export
             targets.

   XmNoperationChangedCallback
             Specifies the list of callbacks that  are  invoked  when  the
             drag  is  started and when the user requests that a different
             operation be applied to the drop.  The type of the  structure
             whose    address    is    passed    to   this   callback   is
             XmOperationChangedCallbackStruct.  The  reason  sent  by  the
             callback is XmCR_OPERATION_CHANGED.

   XmNoperationCursorIcon
             Specifies  the  cursor  icon  used  to  designate the type of
             operation  performed  by  the  drag  transaction.  If   NULL,
             XmScreen  resources provide default icons for copy, link, and
             move operations.

   XmNsourceCursorIcon
             Specifies the cursor icon used to represent the source when a
             dynamic    visual    style    is    used.    If   NULL,   the
             XmNdefaultSourceCursorIcon resource of  XmScreen  provides  a
             default cursor icon.

   XmNsourcePixmapIcon
             Specifies the pixmap icon used to represent the source when a
             preregister visual  style  is  used.  The  icon  is  used  in
             conjunction  with  the  colormap  of  the  widget  passed  to
             XmDragStart.  If NULL, XmNsourceCursorIcon is used.

   XmNstateCursorIcon
             Specifies the cursor icon used to designate the  state  of  a
             drop site.  If NULL, XmScreen resources provide default icons
             for a valid, invalid, and no drop site condition.

   XmNtopLevelEnterCallback
             Specifies the list of callbacks  that  are  called  when  the
             pointer  enters  a  top-level  window  or root window (due to
             changing screens). The type of the structure whose address is
             passed to this callback is XmTopLevelEnterCallbackStruct. The
             reason sent by the callback is XmCR_TOP_LEVEL_ENTER.

   XmNtopLevelLeaveCallback
             Specifies the list of callbacks  that  are  called  when  the
             pointer  leaves a top level window or the root window (due to
             changing screens). The type of the structure whose address is
             passed to this callback is XmTopLevelLeaveCallbackStruct. The
             reason sent by the callback is XmCR_TOP_LEVEL_LEAVE.

   XmNvalidCursorForeground
             Specifies the foreground pixel value of the cursor designated
             as a valid cursor icon.

   Inherited Resources
   DragContext   inherits  behavior  and  resources  from  the  superclass
   described in the following table.  For a complete description  of  each
   resource, refer to the Core reference page.

   
                                                Core Resource Set                                              
   Name                           Class                          Type            Default               Access 
   
   XmNaccelerators                XmCAccelerators                XtAccelerators  dynamic               CSG    
   
   XmNancestorSensitive           XmCSensitive                   Boolean         dynamic               G      
   
   XmNbackground                  XmCBackground                  Pixel           dynamic               CSG    
   
   XmNbackgroundPixmap            XmCPixmap                      Pixmap          XmUNSPECIFIED_PIXMAP  CSG    
   
   XmNborderColor                 XmCBorderColor                 Pixel           XtDefaultForeground   CSG    
   
   XmNborderPixmap                XmCPixmap                      Pixmap          XmUNSPECIFIED_PIXMAP  CSG    
   
   XmNborderWidth                 XmCBorderWidth                 Dimension       0                     CSG    
   
   XmNcolormap                    XmCColormap                    Colormap        dynamic               CG     
   
   XmNdepth                       XmCDepth                       int             dynamic               CG     
   
   XmNdestroyCallback             XmCCallback                    XtCallbackList  NULL                  C      
   
   XmNheight                      XmCHeight                      Dimension       dynamic               CSG    
   
   XmNinitialResourcesPersistent  XmCInitialResourcesPersistent  Boolean         True                  C      
   
   XmNmappedWhenManaged           XmCMappedWhenManaged           Boolean         True                  CSG    
   
   XmNscreen                      XmCScreen                      Screen *        dynamic               CG     
   
   XmNsensitive                   XmCSensitive                   Boolean         True                  CSG    
   
   XmNtranslations                XmCTranslations                XtTranslations  dynamic               CSG    
   
   XmNwidth                       XmCWidth                       Dimension       dynamic               CSG    
   
   XmNx                           XmCPosition                    Position        0                     CSG    
   
   XmNy                           XmCPosition                    Position        0                     CSG    
   
   
   Callback Information
   Each of the DragContext callbacks has an associated callback structure.

   A   pointer   to   the   following   structure   is   passed   to   the
   XmNdragDropFinishCallback callback:

   typedef struct
   {
           int reason;
           XEvent  *event;
           Time timeStamp;
   }XmDragDropFinishCallbackStruct, *XmDragDropFinishCallback;

   reason    Indicates why the callback was invoked

   event     Points to the XEvent that triggered the callback

   timeStamp Specifies the time at which either the drag or the  drop  was
             completed

   A  pointer  to  the  following  structure  is  passed  to callbacks for
   XmNdragMotionCallback:

   typedef struct
   {
           int reason;
           XEvent *event;
           Time timeStamp;
           unsigned char operation;
           unsigned char operations;
           unsigned char dropSiteStatus;
           Position x;
           Position y;
   }XmDragMotionCallbackStruct, *XmDragMotionCallback;

   reason    Indicates why the callback was invoked.

   event     Points to the XEvent that triggered the callback.

   timeStamp Specifies the timestamp of the logical event.

   operation Identifies an operation.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  operation to the value of the operation
             member  of  the  XmDragProcCallbackStruct  at  the  time  the
             DropSite's XmNdragProc returns.

             If  the toolkit has not called an XmNdragProc and the pointer
             is within  an  active  drop  site,  the  toolkit  initializes
             operation  by  selecting an operation from the bitwise AND of
             the initial value of the operations member and the  value  of
             the  DropSite's  XmNdropSiteOperations resource.  The toolkit
             searches  this  set   first   for   XmDROP_MOVE,   then   for
             XmDROP_COPY,  then for XmDROP_LINK, and initializes operation
             to the first operation it finds in the set.  If  the  toolkit
             finds  none  of  these  operations in the set, it initializes
             operation to XmDROP_NOOP.

             If the toolkit has not called an XmNdragProc and the  pointer
             is  not  within  an active drop site, the toolkit initializes
             operation by selecting an operation from the initial value of
             the  operations  member.  The toolkit searches this set first
             for XmDROP_MOVE, then for XmDROP_COPY, then for  XmDROP_LINK,
             and  initializes operation to the first operation it finds in
             the set.  If the toolkit finds none of  these  operations  in
             the set, it initializes operation to XmDROP_NOOP.

   operations
             Indicates  the  set  of  operations  supported for the source
             data.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  operations  to  the  bitwise AND of the
             DropSite's XmNdropOperations and the value of the  operations
             member  of  the  XmDragProcCallbackStruct  at  the  time  the
             DropSite's XmNdragProc returns.   If  the  resulting  set  of
             operations  is  empty,  the toolkit initializes operations to
             XmDROP_NOOP.

             If the toolkit has not called an  XmNdragProc  and  the  user
             does  not  select  an operation (by pressing a modifier key),
             the toolkit  initializes  operations  to  the  value  of  the
             DragContext's XmNdragOperations resource.

             If  the  toolkit  has  not called an XmNdragProc and the user
             does select an operation, the toolkit initializes  operations
             to  the  bitwise  AND  of the corresponding operation and the
             value of the DragContext's  XmNdragOperations  resource.   If
             the  resulting  set  of  operations  is  empty,  the  toolkit
             initializes operations to XmDROP_NOOP.

   dropSiteStatus
             Indicates whether or not a drop site is valid.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  dropSiteStatus  to  the  value  of  the
             dropSiteStatus member of the XmDragProcCallbackStruct at  the
             time the DropSite's XmNdragProc returns.

             If  the toolkit has not called an XmNdragProc, it initializes
             dropSiteStatus   as   follows:   the   toolkit    initializes
             dropSiteStatus  to  XmNO_DROP_SITE  if the pointer is over an
             inactive drop site or is not over a drop site.   The  toolkit
             initializes  dropSiteStatus  to  XmDROP_SITE_VALID if all the
             following conditions are met:

                *  The pointer is over an active drop site.

                *  The DragContext's XmNexportTargets and  the  DropSite's
                   XmNimportTargets are compatible.

                *  The  initial  value  of  the  operation  member  is not
                   XmDROP_NOOP.

             Otherwise,  the   toolkit   initializes   dropSiteStatus   to
             XmDROP_SITE_INVALID.

   A   pointer   to   the   following   structure   is   passed   for  the
   XmNdropFinishCallback callback:

   typedef struct
   {
           int reason;
           XEvent *event;
           Time timeStamp;
           unsigned char operation;
           unsigned char operations;
           unsigned char dropSiteStatus;
           unsigned char dropAction;
           unsigned char completionStatus;
   }XmDropFinishCallbackStruct, *XmDropFinishCallback;

   reason    Indicates why the callback was invoked.

   event     Points to the XEvent that triggered the callback.

   timeStamp Specifies the time at which the drop was completed.

   operation Identifies an operation.

             If the pointer is over an active  drop  site  when  the  drop
             begins, the toolkit initializes operation to the value of the
             operation member of the XmDropProcCallbackStruct at the  time
             the DropSite's XmNdropProc returns.

             If  the pointer is not over an active drop site when the drop
             begins, the toolkit initializes  operation  by  selecting  an
             operation  from  the  initial value of the operations member.
             The toolkit searches this set first for XmDROP_MOVE, then for
             XmDROP_COPY,  then for XmDROP_LINK, and initializes operation
             to the first operation it finds in the set.  If it finds none
             of  these  operations in the set, it initializes operation to
             XmDROP_NOOP.

   operations
             Indicates the set of  operations  supported  for  the  source
             data.

             If  the  pointer  is  over  an active drop site when the drop
             begins, the toolkit initializes operations to the bitwise AND
             of  the  DropSite's  XmNdropOperations  and  the value of the
             operations member of the XmDropProcCallbackStruct at the time
             the  DropSite's XmNdropProc returns.  If the resulting set of
             operations is empty, the toolkit  initializes  operations  to
             XmDROP_NOOP.

             If  the pointer is not over an active drop site when the drop
             begins and if the user  does  not  select  an  operation  (by
             pressing  a modifier key), the toolkit initializes operations
             to the value of the DragContext's XmNdragOperations resource.

             If the pointer is not over an active drop site when the  drop
             begins  and if the user does select an operation, the toolkit
             initializes  operations   to   the   bitwise   AND   of   the
             corresponding  operation  and  the value of the DragContext's
             XmNdragOperations  resource.   If  the   resulting   set   of
             operations  is  empty,  the toolkit initializes operations to
             XmDROP_NOOP.

   dropSiteStatus
             Indicates whether or not a drop site is valid.

             If the pointer is over an active  drop  site  when  the  drop
             begins,  the  toolkit initializes dropSiteStatus to the value
             of the dropSiteStatus member of the  XmDropProcCallbackStruct
             at the time the DropSite's XmNdropProc returns.

             If  the pointer is not over an active drop site when the drop
             begins,   the   toolkit   initializes    dropSiteStatus    to
             XmNO_DROP_SITE.

   dropAction
             Identifies   the   drop   action.   The  values  are  XmDROP,
             XmDROP_CANCEL,  XmDROP_HELP,   and   XmDROP_INTERRUPT.    The
             XmDROP_INTERRUPT   value   is   currently   unsupported;   if
             specified, it will be interpreted as an XmDROP_CANCEL.

   completionStatus
             An IN/OUT member  that  indicates  the  status  of  the  drop
             action.   After the last callback procedure has returned, the
             final value of this member determines what visual  transition
             effects will be applied.  There are two values:

             XmDROP_SUCCESS
                       The drop was successful.

             XmDROP_FAILURE
                       The drop was unsuccessful.

   A  pointer  to  the  following  structure  is  passed  to callbacks for
   XmNdropSiteEnterCallback:

   typedef struct
   {
           int reason;
           XEvent *event;
           Time timeStamp;
           unsigned char operation;
           unsigned char operations;
           unsigned char dropSiteStatus;
           Position x;
           Position y;
   }XmDropSiteEnterCallbackStruct, *XmDropSiteEnterCallback;

   reason    Indicates why the callback was invoked.

   event     Points to the XEvent that triggered the callback.

   timeStamp Specifies the time the crossing event occurred.

   operation Identifies an operation.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  operation to the value of the operation
             member  of  the  XmDragProcCallbackStruct  at  the  time  the
             DropSite's XmNdragProc returns.

             If  the toolkit has not called an XmNdragProc, it initializes
             operation by selecting an operation from the bitwise  AND  of
             the  initial  value of the operations member and the value of
             the DropSite's XmNdropSiteOperations resource.   The  toolkit
             searches   this   set   first   for   XmDROP_MOVE,  then  for
             XmDROP_COPY, then for XmDROP_LINK, and initializes  operation
             to  the  first operation it finds in the set.  If the toolkit
             finds none of these operations in  the  set,  it  initializes
             operation to XmDROP_NOOP.

   operations
             Indicates  the  set  of  operations  supported for the source
             data.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  operations  to  the  bitwise AND of the
             DropSite's XmNdropOperations and the value of the  operations
             member  of  the  XmDragProcCallbackStruct  at  the  time  the
             DropSite's XmNdragProc returns.   If  the  resulting  set  of
             operations  is  empty,  the toolkit initializes operations to
             XmDROP_NOOP.

             If the toolkit has not called an  XmNdragProc  and  the  user
             does  not  select  an operation (by pressing a modifier key),
             the toolkit  initializes  operations  to  the  value  of  the
             DragContext's XmNdragOperations resource.

             If  the  toolkit  has  not called an XmNdragProc and the user
             does select an operation, the toolkit initializes  operations
             to  the  bitwise  AND  of the corresponding operation and the
             value of the DragContext's  XmNdragOperations  resource.   If
             the  resulting  set  of  operations  is  empty,  the  toolkit
             initializes operations to XmDROP_NOOP.

   dropSiteStatus
             Indicates whether or not a drop site is valid.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  dropSiteStatus  to  the  value  of  the
             dropSiteStatus member of the XmDragProcCallbackStruct at  the
             time the DropSite's XmNdragProc returns.

             If  the  toolkit  has  not called XmNdragProc, it initializes
             dropSiteStatus  to  XmDROP_SITE_VALID  if  the  DragContext's
             XmNexportTargets  and  the  DropSite's  XmNimportTargets  are
             compatible and if the initial value of the  operation  member
             is  not  XmDROP_NOOP.   Otherwise,  the  toolkit  initializes
             dropSiteStatus to XmDROP_SITE_INVALID.

   x         Indicates the x-coordinate of  the  pointer  in  root  window
             coordinates.

   y         Indicates  the  y-coordinate  of  the  pointer in root window
             coordinates.

   A pointer to  the  following  structure  is  passed  to  callbacks  for
   XmNdropSiteLeaveCallback:

   typedef struct
   {
           int reason;
           XEvent *event;
           Time timeStamp;
   }XmDropSiteLeaveCallbackStruct, *XmDropSiteLeaveCallback;

   reason    Indicates why the callback was invoked

   event     Points to the XEvent that triggered the callback

   timeStamp Specifies the timestamp of the logical event

   A   pointer   to   the   following   structure   is   passed   for  the
   XmNdropStartCallback callback:

   typedef struct
   {
           int reason;
           XEvent *event;
           Time timeStamp;
           unsigned char operation;
           unsigned char operations;
           unsigned char dropSiteStatus;
           unsigned char dropAction;
           Position x;
           Position y;
   }XmDropStartCallbackStruct, *XmDropStartCallback;

   reason    Indicates why the callback was invoked.

   event     Points to the XEvent that triggered the callback.

   timeStamp Specifies the time at which the drag was completed.

   operation Identifies an operation.

             If the pointer is over an active  drop  site  when  the  drop
             begins, the toolkit initializes operation to the value of the
             operation member of the XmDropProcCallbackStruct at the  time
             the DropSite's XmNdropProc returns.

             If  the pointer is not over an active drop site when the drop
             begins, the toolkit initializes  operation  by  selecting  an
             operation  from  the  initial value of the operations member.
             The toolkit searches this set first for XmDROP_MOVE, then for
             XmDROP_COPY,  then for XmDROP_LINK, and initializes operation
             to the first operation it finds in the set.  If it finds none
             of  these  operations in the set, it initializes operation to
             XmDROP_NOOP.

   operations
             Indicates the set of  operations  supported  for  the  source
             data.

             If  the  pointer  is  over  an active drop site when the drop
             begins, the toolkit initializes operations to the bitwise AND
             of  the  DropSite's  XmNdropOperations  and  the value of the
             operations member of the XmDropProcCallbackStruct at the time
             the  DropSite's XmNdropProc returns.  If the resulting set of
             operations is empty, the toolkit  initializes  operations  to
             XmDROP_NOOP.

             If  the pointer is not over an active drop site when the drop
             begins and if the user  does  not  select  an  operation  (by
             pressing  a modifier key), the toolkit initializes operations
             to the value of the DragContext's XmNdragOperations resource.

             If the pointer is not over an active drop site when the  drop
             begins  and if the user does select an operation, the toolkit
             initializes  operations   to   the   bitwise   AND   of   the
             corresponding  operation  and  the value of the DragContext's
             XmNdragOperations  resource.   If  the   resulting   set   of
             operations  is  empty,  the toolkit initializes operations to
             XmDROP_NOOP.

   dropSiteStatus
             Indicates whether or not a drop site is valid.

             If the pointer is over an active  drop  site  when  the  drop
             begins,  the  toolkit initializes dropSiteStatus to the value
             of the dropSiteStatus member of the  XmDropProcCallbackStruct
             at the time the DropSite's XmNdropProc returns.

             If  the pointer is not over an active drop site when the drop
             begins,   the   toolkit   initializes    dropSiteStatus    to
             XmNO_DROP_SITE.

             This  field  is  invalid  if  the  dropAction field is set to
             XmDROP_CANCEL.

   dropAction
             An IN/OUT member that identifies the drop action.  The values
             are XmDROP, XmDROP_CANCEL, XmDROP_HELP, and XmDROP_INTERRUPT.
             The value of dropAction can be modified to change the  action
             actually  initiated.  The value XmDROP_INTERRUPT is currently
             unsupported; if specified,  it  will  be  interpreted  as  an
             XmDROP_CANCEL.

   x         Indicates  the  x-coordinate  of  the  pointer in root window
             coordinates.

   y         Indicates the y-coordinate of  the  pointer  in  root  window
             coordinates.

   A   pointer   to   the   following   structure   is   passed   to   the
   XmNoperationChangedCallback callback:

   typedef struct
   {
           int reason;
           XEvent  *event;
           Time timeStamp;
           unsigned char operation;
           unsigned char operations;
           unsigned char dropSiteStatus;
   }XmOperationChangedCallbackStruct, *XmOperationChangedCallback;

   reason    Indicates why the callback was invoked.

   event     Points to the XEvent that triggered the callback.

   timeStamp Specifies the time at which the crossing event occurred.

   operation Identifies an operation.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  operation to the value of the operation
             member  of  the  XmDragProcCallbackStruct  at  the  time  the
             DropSite's XmNdragProc returns.

             If the toolkit has not called an XmNdragProc, and the pointer
             is within  an  active  drop  site,  the  toolkit  initializes
             operation  by  selecting an operation from the bitwise AND of
             the initial value of the operations member and the  value  of
             the  DropSite's  XmNdropSiteOperations resource.  The toolkit
             searches  this  set   first   for   XmDROP_MOVE,   then   for
             XmDROP_COPY,  then for XmDROP_LINK, and initializes operation
             to the first operation it finds in the set.  If  the  toolkit
             finds  none  of  these  operations in the set, it initializes
             operation to XmDROP_NOOP.

             If the toolkit has not called an XmNdragProc, and the pointer
             is  not  within  an active drop site, the toolkit initializes
             operation by selecting an operation from the initial value of
             the  operations  member.  The toolkit searches this set first
             for XmDROP_MOVE, then for XmDROP_COPY, then for  XmDROP_LINK,
             and  initializes operation to the first operation it finds in
             the set.  If the toolkit finds none of  these  operations  in
             the set, it initializes operation to XmDROP_NOOP.

   operations
             Indicates  the  set  of  operations  supported for the source
             data.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  operations  to  the  bitwise AND of the
             DropSite's XmNdropOperations and the value of the  operations
             member  of  the  XmDragProcCallbackStruct  at  the  time  the
             DropSite's XmNdragProc returns.   If  the  resulting  set  of
             operations  is  empty,  the toolkit initializes operations to
             XmDROP_NOOP.

             If the toolkit has not called an XmNdragProc,  and  the  user
             does  not  select  an operation (by pressing a modifier key),
             the toolkit  initializes  operations  to  the  value  of  the
             DragContext's XmNdragOperations resource.

             If  the  toolkit  has not called an XmNdragProc, and the user
             does select an operation, the toolkit initializes  operations
             to  the  bitwise  AND  of the corresponding operation and the
             value of the DragContext's  XmNdragOperations  resource.   If
             the  resulting  set  of  operations  is  empty,  the  toolkit
             initializes operations to XmDROP_NOOP.

   dropSiteStatus
             Indicates whether or not a drop site is valid.

             If the toolkit has just called a DropSite's XmNdragProc,  the
             toolkit  initializes  dropSiteStatus  to  the  value  of  the
             dropSiteStatus member of the XmDragProcCallbackStruct at  the
             time the DropSite's XmNdragProc returns.

             If  the  toolkit has not called an XmNdragProc it initializes
             dropSiteStatus to XmNO_DROP_SITE if the pointer  is  over  an
             inactive  drop  site or is not over a drop site.  The toolkit
             initializes dropSiteStatus to XmDROP_SITE_VALID  if  all  the
             following conditions are met:

                *  The pointer is over an active drop site

                *  The  DragContext's  XmNexportTargets and the DropSite's
                   XmNimportTargets are compatible

                *  The initial  value  of  the  operation  member  is  not
                   XmDROP_NOOP

             Otherwise,   the   toolkit   initializes   dropSiteStatus  to
             XmDROP_SITE_INVALID.

   A pointer to  the  following  structure  is  passed  to  callbacks  for
   XmNtopLevelEnterCallback:

   typedef struct
   {
           int reason;
           XEvent *event;
           Time timeStamp;
           Screen screen;
           Window window;
           Position x;
           Position y;
           unsigned char dragProtocolStyle;
   }XmTopLevelEnterCallbackStruct, *XmTopLevelEnterCallback;

   reason    Indicates why the callback was invoked.

   event     Points to the XEvent that triggered the callback.

   timeStamp Specifies the timestamp of the logical event.

   screen    Specifies  the screen associated with the top-level window or
             root window being entered.

   window    Specifies the ID of the top-level window or root window being
             entered.

   x         Indicates  the  x-coordinate  of  the  pointer in root window
             coordinates.

   y         Indicates the y-coordinate of  the  pointer  in  root  window
             coordinates.

   dragProtocolStyle
             Specifies  the  protocol  style adopted by the initiator. The
             values are XmDRAG_DROP_ONLY, XmDRAG_DYNAMIC, XmDRAG_NONE, and
             XmDRAG_PREREGISTER.

   A  pointer  to  the  following  structure  is  passed  to callbacks for
   XmNtopLevelLeaveCallback:

   typedef struct
   {
           int reason;
           XEvent  *event;
           Time timeStamp;
           Screen screen;
           Window window;
   }XmTopLevelLeaveCallbackStruct, *XmTopLevelLeaveCallback;

   reason    Indicates why the callback was invoked

   event     Points to the XEvent that triggered the callback

   timeStamp Specifies the timestamp of the logical event

   screen    Specifies a screen associated with the  top-level  window  or
             root window being left

   window    Specifies the ID of the top-level window or root window being
             left

   Translations
   The XmDragContext translations are described  in  the  following  list.
   The  following  key  names  are  listed  in  the  X  standard key event
   translation table syntax.  This format is the  one  used  by  Motif  to
   specify  the  widget  actions  corresponding  to  a given key.  A brief
   overview of the format is provided  under  VirtualBindings(3).   For  a
   complete  description  of  the  format,  please  refer to the X Toolkit
   Instrinsics Documentation.

   Button1<Enter>:
             DragMotion()

   Button1<Leave>:
             DragMotion()

   Button1<Motion>:
             DragMotion()

   Button2<Enter>:
             DragMotion()

   Button2<Leave>:
             DragMotion()

   Button2<Motion>:
             DragMotion()

   <Btn2Up>: FinishDrag()

   <Btn1Up>: FinishDrag()

   <Key>Return:
             FinishDrag()

   <Key><osfActivate>:
             FinishDrag()

   <BtnDown>:
             IgnoreButtons()

   <BtnUp>:  IgnoreButtons()

   :<Key><osfCancel>:
             CancelDrag()

   :<Key><osfHelp>:
             HelpDrag()

   :<Key><osfUp>:
             DragKey(Up)

   :<Key><osfDown>:
             DragKey(Down)

   :<Key><osfLeft>:
             DragKey(Left)

   :<Key><osfRight>:
             DragKey(Right)

   :<KeyUp>: DragKey(Update)

   :<KeyDown>:
             DragKey(Update)

   Action Routines
   The XmDragContext action routines are

   CancelDrag():
             Cancels  the  drag  operation  and   frees   the   associated
             DragContext.

   DragKey(String)
             If  the  value  of  String  is Left, Right, Up, or Down, this
             action  moves  the  dragged  object  in   the   corresponding
             location. Any other values of String are ignored.

   DragMotion():
             Drags the selected data as the pointer is moved.

   FinishDrag():
             Finishes the drag operation and starts the drop operation.

   HelpDrag():
             Initiates  a  conditional  drop  that enables the receiver to
             provide help information to the user. The user can cancel  or
             continue the drop operation in response to this information.

   Virtual Bindings
   The  bindings  for  virtual  keys are vendor specific.  For information
   about bindings for virtual buttons and keys, see VirtualBindings(3).

RELATED INFORMATION

   Core(3), XmDisplay(3), XmDragCancel(3), XmDragIcon(3),  XmDragStart(3),
   XmDropSite(3), XmDropTransfer(3), and XmScreen(3).

                                                          XmDragContext(3)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.