projects
/
chise
/
xemacs-chise.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
XEmacs 21.2.20 "Yoko".
[chise/xemacs-chise.git]
/
lwlib
/
lwlib.c
diff --git
a/lwlib/lwlib.c
b/lwlib/lwlib.c
index
20c160f
..
69a5c04
100644
(file)
--- a/
lwlib/lwlib.c
+++ b/
lwlib/lwlib.c
@@
-125,8
+125,6
@@
free_widget_value (widget_value *wv)
widget_value_free_list = wv;
}
widget_value_free_list = wv;
}
-static void free_widget_value_tree (widget_value *wv);
-
static void
free_widget_value_contents (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;
}
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);
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)
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;
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
#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;
+ }
+}
+