This commit was generated by cvs2svn to compensate for changes in r1077,
[chise/xemacs-chise.git.1] / lwlib / lwlib.c
index 20c160f..69a5c04 100644 (file)
@@ -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; i<wv->nargs; i++)
+       {
+         addto[i + *offset] = wv->args[i];
+       }
+      *offset += wv->nargs;
+    }
+}
+