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; }
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); }
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; }