sohara@lamont.ldgo.columbia.edu (suzanne ohara) (12/12/90)
I am trying to get the XmNdialogTitle from a widget when the cancel
button in a dialog box(file selection box in particular) is pressed.
I wrote the routine that follows, but it only fetches the first time
a cancel is pressed and on additional calls it fails. Could anyone
suggest where my problem is, or if I am approaching this wrong.
Thankyou, Suzanne
.... this is a piece of the total code
cancel_proc(w,tag,reason)
Widget w;
int *tag;
caddr_t *reason;
{
int widget_num = *tag;
char text[120],
*ptr_text = NULL;
/*** get name of dialog ***/
if(get_dialog_title(widget_num,&ptr_text) == TRUE)
{
(void)sprintf(text,"%s %s. (%s)",K_CANCEL_CHANGES_TEXT,ptr_text,
K_INOPERABLE_TEXT);
/** write message to log display **/
add_to_log_list(text);
/** close displayed dialog **/
if(XtIsManaged(widget_array[widget_num]))
XtUnmanageChild(widget_array[widget_num]);
}
if(ptr_text == NULL) XtFree(ptr_text);
}
Boolean
get_dialog_title(widget_id,text)
int widget_id;
char **text;
{
XmString xmstring=NULL;
get_something(widget_array[widget_id],XmNdialogTitle,&xmstring);
if(XmStringEmpty(xmstring))
{
error_test(K_BAD_GET_DIALOG_TITLE_TEXT,FALSE);
return(FALSE);
}
else
{
if(text != NULL)
{
XtFree(*text);
*text= NULL;
}
if(XmStringGetLtoR(xmstring,XmSTRING_DEFAULT_CHARSET,text) != TR
UE)
error_test(K_BAD_CONVERT_DIALOG_TITLE_TEXT,TRUE);
}
return(TRUE);
}
void
get_something(w,resource,value)
Widget w;
char *resource;
caddr_t *value;
{
Arg al[1];
XtSetArg(al[0],resource,value);
XtGetValues(w,al,1);
}