X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lwlib%2Flwlib.c;h=69a5c04ab7a6592ffc6f65099bfd98b1cd5f68b9;hb=ea1ea793fe6e244ef5555ed983423a204101af13;hp=20c160fcb2fddf2bbff7ee3d0d1fbca143d7b586;hpb=6883ee56ec887c2c48abe5b06b5e66aa74031910;p=chise%2Fxemacs-chise.git diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c index 20c160f..69a5c04 100644 --- a/lwlib/lwlib.c +++ b/lwlib/lwlib.c @@ -125,8 +125,6 @@ free_widget_value (widget_value *wv) widget_value_free_list = wv; } -static void free_widget_value_tree (widget_value *wv); - static void free_widget_value_contents (widget_value *wv) { @@ -155,6 +153,14 @@ free_widget_value_contents (widget_value *wv) free_widget_value_tree (wv->contents); wv->contents = (widget_value *) 0xDEADBEEF; } + if (wv->args && wv->nargs) + { + if (wv->free_args) + free (wv->args); + wv->args = (ArgList) 0xDEADBEEF; + wv->nargs = 0; + wv->free_args = 0; + } if (wv->next) { free_widget_value_tree (wv->next); @@ -162,7 +168,7 @@ free_widget_value_contents (widget_value *wv) } } -static void +void free_widget_value_tree (widget_value *wv) { if (!wv) @@ -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,17 @@ 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; + } +} +