Example #1
0
/*++++++++++++++++++++++++++++ transfer_data() ++++++++++++++++++++++++++*/
static void
transfer_data(Widget        w,
              XtPointer     client_data,
              Atom          *selection,
              Atom          *type,
              XtPointer     value,
              unsigned long *length,
              int           *format)
{
   if ((*type == compound_text) && (y != -1))
   {
      int           i,
                    no_selected,
                    *select_list,
                    pos = XmListYToPos(host_list_w, y);
      char          *ptr;
      XmString      str;
      XmStringTable xmsel;

      /* Retrieve the selected items from the list. */
      XtVaGetValues(host_list_w,
                    XmNselectedItemCount, &no_selected,
                    XmNselectedItems,     &xmsel,
                    NULL);

      for (i = 0; i < no_selected; i++)
      {
         ptr = XmCvtXmStringToCT(xmsel[i]);
         str = XmStringCreateLocalized(ptr);
         if (pos == 0) /* Last position! */
         {
            XmListAddItemUnselected(host_list_w, str, 0);
         }
         else
         {
            XmListAddItemUnselected(host_list_w, str, pos + i);
         }
         XmStringFree(str);
      }
      if (XmListGetSelectedPos(host_list_w, &select_list, &no_selected) == True)
      {
         XmListDeletePositions(host_list_w, select_list, no_selected);
      }

      /* Select the host that was selected last. */
      str = XmStringCreateLocalized(last_selected_host);
      last_selected = -1;
      XmListSelectItem(host_list_w, str, True);
      XmStringFree(str);

      XtFree((char *)select_list);

      host_alias_order_change = YES;
   }

   return;
}
Example #2
0
static Boolean DragConvertProc(
  Widget w,
  Atom *selection,
  Atom *target,
  Atom *typeRtn,
  XtPointer *valueRtn,
  unsigned long *lengthRtn,
  int *formatRtn,
  unsigned long *max_lengthRtn,
  XtPointer client_data,
  XtRequestId *request_id)
#endif
{
  XmString cString;
  char *cText, *passText;

  if (channelName != NULL) {
    if (*target != COMPOUND_TEXT) return(False);
    cString = XmStringCreateSimple(channelName);
    cText = XmCvtXmStringToCT(cString);
    passText = XtMalloc(STRLEN(cText)+1);
    memcpy(passText,cText,STRLEN(cText)+1);
   /* probably need this too */
    XmStringFree(cString);

   /* format the value for return */
    *typeRtn = COMPOUND_TEXT;
    *valueRtn = (XtPointer)passText;
    *lengthRtn = STRLEN(passText);
    *formatRtn = 8;	/* from example - related to #bits for data elements */
    return(True);
  } else {
/* monitorData not found */
    return(False);
  }

}