diff lwlib/lwlib.h @ 434:9d177e8d4150 r21-2-25

Import from CVS: tag r21-2-25
author cvs
date Mon, 13 Aug 2007 11:30:53 +0200
parents 3ecd8885ac67
children 8de8e3f6228a
line wrap: on
line diff
--- a/lwlib/lwlib.h	Mon Aug 13 11:30:00 2007 +0200
+++ b/lwlib/lwlib.h	Mon Aug 13 11:30:53 2007 +0200
@@ -106,6 +106,17 @@
   int scrollbar_x, scrollbar_y;
 } scrollbar_values;
 
+typedef struct _widget_args
+{
+  /* some things are only possible at creation time. args are applied
+     to widgets at creation time.  */
+  ArgList args;
+  int	nargs;
+  /* Copying args is impossible so we make the caller give us heap allocated
+     args and free them when on-one wants them any more. */
+  int	ref_count;
+} widget_args;
+
 typedef struct _widget_value
 {
   /* This slot is only partially utilized right now. */
@@ -147,15 +158,12 @@
   /* data defining a scrollbar; only valid if type == "scrollbar" */
   scrollbar_values *scrollbar_data;
 
+  /* A reference counted arg structure. */
+  struct _widget_args *args;
   /* we resource the widget_value structures; this points to the next
      one on the free list if this one has been deallocated.  */
   struct _widget_value *free_list;
 
-  /* some things are only possible at creation time. args are applied
-     to widgets at creation time.  */
-  ArgList args;
-  int	nargs;
-  Boolean	free_args;
 } widget_value;
 
 
@@ -211,6 +219,8 @@
 void lw_pop_up_all_widgets (LWLIB_ID id);
 void lw_pop_down_all_widgets (LWLIB_ID id);
 void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset);
+void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value);
+void lw_copy_widget_value_args (widget_value* copy, widget_value* val);
 
 widget_value *malloc_widget_value (void);
 void free_widget_value (widget_value *);