#include "copyright.h"
#include <config.h>
#include "XMenuInt.h"
int
XMenuInsertSelection(menu, p_num, s_num, data, label, active)
register XMenu *menu;
register int p_num;
register int s_num;
char *data;
char *label;
int active;
{
register XMPane *p_ptr;
register XMSelect *s_ptr;
XMSelect *select;
int label_length;
int label_width;
if (label == NULL) {
_XMErrorCode = XME_ARG_BOUNDS;
return(XM_FAILURE);
}
p_ptr = _XMGetPanePtr(menu, p_num);
if (p_ptr == NULL) return(XM_FAILURE);
s_ptr = _XMGetSelectionPtr(p_ptr, (s_num - 1));
if (s_ptr == NULL) return(XM_FAILURE);
select = (XMSelect *)calloc(1, sizeof(XMSelect));
if (select == NULL) {
_XMErrorCode = XME_CALLOC;
return(XM_FAILURE);
}
label_length = strlen(label);
label_width = XTextWidth(menu->s_fnt_info, label, label_length);
if (!strcmp (label, "--") || !strcmp (label, "---"))
{
select->type = SEPARATOR;
select->active = 0;
}
else
{
select->type = SELECTION;
select->active = active;
}
select->active = active;
select->serial = -1;
select->label = label;
select->label_width = label_width;
select->label_length = label_length;
select->data = data;
select->parent_p = p_ptr;
emacs_insque(select, s_ptr);
p_ptr->s_count++;
menu->recompute = 1;
_XMErrorCode = XME_NO_ERROR;
return(s_num);
}