X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=lwlib%2Flwlib.h;h=458e499391c399a12e5bbf985f87ab619d742a24;hp=bca2d6457f59ad267533f03797d8a929864d59cc;hb=3e447015251ce6dcde843cbed10d9033d5538622;hpb=ea1ea793fe6e244ef5555ed983423a204101af13 diff --git a/lwlib/lwlib.h b/lwlib/lwlib.h index bca2d64..458e499 100644 --- a/lwlib/lwlib.h +++ b/lwlib/lwlib.h @@ -1,17 +1,8 @@ -#ifndef LWLIB_H -#define LWLIB_H - -#undef CONST +#ifndef INCLUDED_lwlib_h_ +#define INCLUDED_lwlib_h_ #include -/* To eliminate use of `const' in the lwlib sources, define CONST_IS_LOSING. */ -#ifdef CONST_IS_LOSING -# define CONST -#else -# define CONST const -#endif - #if defined (LWLIB_MENUBARS_LUCID) || defined (LWLIB_MENUBARS_MOTIF) || defined (LWLIB_MENUBARS_ATHENA) #define NEED_MENUBARS #endif @@ -106,6 +97,17 @@ typedef struct _scrollbar_values 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 +149,12 @@ typedef struct _widget_value /* 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; @@ -185,13 +184,13 @@ extern int lw_menu_active; #include "xlwtabs.h" #endif -void lw_register_widget (CONST char* type, CONST char* name, LWLIB_ID id, +void lw_register_widget (const char* type, const char* name, LWLIB_ID id, widget_value* val, lw_callback pre_activate_cb, lw_callback selection_cb, lw_callback post_activate_cb); Widget lw_get_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p); Widget lw_make_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p); -Widget lw_create_widget (CONST char* type, CONST char* name, LWLIB_ID id, +Widget lw_create_widget (const char* type, const char* name, LWLIB_ID id, widget_value* val, Widget parent, Boolean pop_up_p, lw_callback pre_activate_cb, lw_callback selection_cb, @@ -211,6 +210,8 @@ Boolean lw_get_some_values (LWLIB_ID id, widget_value* val); 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 *); @@ -225,4 +226,4 @@ void lw_set_keyboard_focus (Widget parent, Widget w); /* Silly Energize hack to invert the "sheet" button */ void lw_show_busy (Widget w, Boolean busy); -#endif /* LWLIB_H */ +#endif /* INCLUDED_lwlib_h_ */