Mercurial > hg > xemacs-beta
diff lwlib/lwlib.c @ 420:41dbb7a9d5f2 r21-2-18
Import from CVS: tag r21-2-18
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:24:09 +0200 |
parents | 697ef44129c6 |
children | 11054d720c21 |
line wrap: on
line diff
--- a/lwlib/lwlib.c Mon Aug 13 11:23:14 2007 +0200 +++ b/lwlib/lwlib.c Mon Aug 13 11:24:09 2007 +0200 @@ -155,6 +155,12 @@ free_widget_value_tree (wv->contents); wv->contents = (widget_value *) 0xDEADBEEF; } + if (wv->args && wv->free_args) + { + free (wv->args); + wv->args = (void *) 0xDEADBEEF; + wv->nargs = 0; + } if (wv->next) { free_widget_value_tree (wv->next); @@ -263,6 +269,13 @@ copy->next = copy_widget_value_tree (val->next, change); copy->toolkit_data = NULL; copy->free_toolkit_data = False; + if (val->nargs) + { + copy->args = (ArgList)malloc (sizeof (Arg) * val->nargs); + memcpy (copy->args, val->args, sizeof(Arg) * val->nargs); + copy->nargs = val->nargs; + copy->free_args = True; + } #ifdef NEED_SCROLLBARS copy_scrollbar_values (val, copy); #endif @@ -1300,3 +1313,16 @@ } } } + +void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset) +{ + int i; + if (wv->nargs && wv->args) + { + for (i = 0; i<wv->nargs; i++) + { + addto[i + *offset] = wv->args[i]; + } + *offset += wv->nargs; + } +}