X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lwlib%2Flwlib.c;h=dcbc0b2f887fdc557666532e015e672d38e82ce3;hb=debb7eb5baa3e6aae77e4fc0b7704887baf3006e;hp=20c160fcb2fddf2bbff7ee3d0d1fbca143d7b586;hpb=6883ee56ec887c2c48abe5b06b5e66aa74031910;p=chise%2Fxemacs-chise.git diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c index 20c160f..dcbc0b2 100644 --- a/lwlib/lwlib.c +++ b/lwlib/lwlib.c @@ -155,6 +155,12 @@ free_widget_value_contents (widget_value *wv) 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_widget_value_tree (widget_value *val, change_type change) 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 @@ lw_show_busy (Widget w, Boolean busy) } } } + +void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset) +{ + int i; + if (wv->nargs && wv->args) + { + for (i = 0; inargs; i++) + { + addto[i + *offset] = wv->args[i]; + } + *offset += wv->nargs; + } +}