boolean HelpOnContextCommand::doIt(CommandInterface *ci)
{
    Widget                       widget;
    MainWindowHelpCallbackStruct callData;

    widget =
	XmTrackingLocate
	    (this->window->getMainWindow(), 
	     HelpOnContextCommand::HelpCursor,
	     False);

    XSync(theApplication->getDisplay(), False);

    while (widget)
    {
	if (XtHasCallbacks(widget, XmNhelpCallback) == XtCallbackHasSome)
	{
	    callData.reason = DxCR_HELP;
	    callData.event  = NULL;
	    callData.widget = widget;
	    XtCallCallbacks
		(widget,
		 XmNhelpCallback,
		 (XtPointer)&callData);
	    break;
	}
	else
	{
	    widget = XtParent(widget);
	}
    }

    return TRUE;
}
Example #2
0
void
do_tracking(Widget wid,
	    XtPointer client_data,
	    XtPointer call_data)
{
    Cursor help_cursor = XCreateFontCursor(XtDisplay(wid),
					   XC_question_arrow);

    Widget w = XmTrackingLocate(one,
				help_cursor,
				False);

    printf ("The widget you selected is %p\n", w);
}
Example #3
0
void HGU_XmHelpOnWindowsCb(Widget	w,
			   XtPointer	client_data,
			   XtPointer	call_data)
{
  Widget		help_widget, topl;
  Cursor		cursor;
  XmAnyCallbackStruct	*cbs = (XmAnyCallbackStruct *) call_data;

  /* check initialisation */
  if( help_resources.help_dir == NULL ){
    HGU_XmHelpMenuInit( get_topl_widget( w ) );
  }

  cursor = XCreateFontCursor(XtDisplayOfObject(w), XC_hand2);
  topl = get_topl_widget( w );
  if( (help_widget = XmTrackingLocate(topl, cursor, False)) ){
    help_widget = get_window_widget( help_widget );
    cbs->reason = XmCR_HELP;
    XtCallCallbacks(help_widget, XmNhelpCallback, &cbs);
  }
  XFreeCursor(XtDisplayOfObject(w), cursor);

  return;
}