Mercurial > hg > xemacs-beta
diff lwlib/lwlib.c @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | de805c49cfc1 |
children | 41dbb7a9d5f2 |
line wrap: on
line diff
--- a/lwlib/lwlib.c Mon Aug 13 11:19:22 2007 +0200 +++ b/lwlib/lwlib.c Mon Aug 13 11:20:41 2007 +0200 @@ -40,9 +40,6 @@ #endif #ifdef NEED_MOTIF #include "lwlib-Xm.h" -#ifdef LWLIB_WIDGETS_MOTIF -#include <Xm/Xm.h> -#endif #endif #ifdef NEED_ATHENA #include "lwlib-Xaw.h" @@ -70,13 +67,13 @@ /* Forward declarations */ -static void instantiate_widget_instance (widget_instance *instance); -static void free_widget_value_args (widget_value* wv); +static void +instantiate_widget_instance (widget_instance *instance); /* utility functions for widget_instance and widget_info */ static char * -safe_strdup (const char *s) +safe_strdup (CONST char *s) { char *result; if (! s) return 0; @@ -111,7 +108,7 @@ } if (wv) { - memset (wv, '\0', sizeof (widget_value)); + memset (wv, 0, sizeof (widget_value)); } return wv; } @@ -128,6 +125,8 @@ widget_value_free_list = wv; } +static void free_widget_value_tree (widget_value *wv); + static void free_widget_value_contents (widget_value *wv) { @@ -156,9 +155,6 @@ free_widget_value_tree (wv->contents); wv->contents = (widget_value *) 0xDEADBEEF; } - - free_widget_value_args (wv); - if (wv->next) { free_widget_value_tree (wv->next); @@ -166,7 +162,7 @@ } } -void +static void free_widget_value_tree (widget_value *wv) { if (!wv) @@ -188,7 +184,7 @@ if (val->scrollbar_data) *copy->scrollbar_data = *val->scrollbar_data; else - memset (copy->scrollbar_data, '\0', sizeof (scrollbar_values)); + memset (copy->scrollbar_data, 0, sizeof (scrollbar_values)); } /* @@ -235,40 +231,6 @@ #endif /* NEED_SCROLLBARS */ -#ifdef HAVE_WIDGETS -/* - * Return true if old->args was not equivalent - * to new->args. - */ -static Boolean -merge_widget_value_args (widget_value *old, widget_value *new) -{ - Boolean changed = False; - - if (new->args && !old->args) - { - lw_copy_widget_value_args (new, old); - changed = True; - } - /* Generally we don't want to lose values that are already in the - widget. */ - else if (!new->args && old->args) - { - lw_copy_widget_value_args (old, new); - changed = True; - } - else if (new->args && old->args && new->args != old->args) - { - /* #### Do something more sensible here than just copying the - new values (like actually merging the values). */ - lw_copy_widget_value_args (new, old); - changed = True; - } - - return changed; -} -#endif /* HAVE_WIDGETS */ - /* Make a complete copy of a widget_value tree. Store CHANGE into the widget_value tree's `change' field. */ @@ -301,8 +263,6 @@ copy->next = copy_widget_value_tree (val->next, change); copy->toolkit_data = NULL; copy->free_toolkit_data = False; - - lw_copy_widget_value_args (val, copy); #ifdef NEED_SCROLLBARS copy_scrollbar_values (val, copy); #endif @@ -329,7 +289,7 @@ } static widget_info * -allocate_widget_info (const char *type, const char *name, +allocate_widget_info (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) @@ -357,7 +317,7 @@ safe_free_str (info->type); safe_free_str (info->name); free_widget_value_tree (info->val); - memset (info, '\0', sizeof (widget_info)); + memset ((void*)info, 0xDEADBEEF, sizeof (widget_info)); free (info); } @@ -392,7 +352,7 @@ static void free_widget_instance (widget_instance *instance) { - memset (instance, '\0', sizeof (widget_instance)); + memset ((void *) instance, 0xDEADBEEF, sizeof (widget_instance)); free (instance); } @@ -502,13 +462,13 @@ /* utility function for widget_value */ static Boolean -safe_strcmp (const char *s1, const char *s2) +safe_strcmp (CONST char *s1, CONST char *s2) { if (!!s1 ^ !!s2) return True; return (s1 && s2) ? strcmp (s1, s2) : s1 ? False : !!s2; } -#ifndef WIN32_NATIVE +#ifndef WINDOWSNT static change_type max (change_type i1, change_type i2) { @@ -617,14 +577,6 @@ change = max (change, INVISIBLE_CHANGE); val1->call_data = val2->call_data; } -#ifdef HAVE_WIDGETS - if (merge_widget_value_args (val1, val2)) - { - EXPLAIN (val1->name, change, VISIBLE_CHANGE, "widget change", 0, 0); - change = max (change, VISIBLE_CHANGE); - } -#endif - #ifdef NEED_SCROLLBARS if (merge_scrollbar_values (val1, val2)) { @@ -689,7 +641,7 @@ /* modifying the widgets */ static Widget -name_to_widget (widget_instance *instance, const char *name) +name_to_widget (widget_instance *instance, CONST char *name) { Widget widget = NULL; @@ -826,7 +778,7 @@ static widget_creation_function -find_in_table (const char *type, widget_creation_entry *table) +find_in_table (CONST char *type, widget_creation_entry *table) { widget_creation_entry *cur; for (cur = table; cur->type; cur++) @@ -836,7 +788,7 @@ } static Boolean -dialog_spec_p (const char *name) +dialog_spec_p (CONST char *name) { /* return True if name matches [EILPQeilpq][1-9][Bb] or [EILPQeilpq][1-9][Bb][Rr][1-9] */ @@ -920,7 +872,7 @@ } void -lw_register_widget (const char *type, const char *name, +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) @@ -956,7 +908,7 @@ } Widget -lw_create_widget (const char *type, const char *name, +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, lw_callback post_activate_cb) @@ -1048,14 +1000,14 @@ } void -lw_destroy_everything (void) +lw_destroy_everything () { while (all_widget_info) lw_destroy_all_widgets (all_widget_info->id); } void -lw_destroy_all_pop_ups (void) +lw_destroy_all_pop_ups () { widget_info *info; widget_info *next; @@ -1348,86 +1300,3 @@ } } } - -void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset) -{ - int i; - if (wv->args && wv->args->nargs) - { - for (i = 0; i<wv->args->nargs; i++) - { - addto[i + *offset] = wv->args->args[i]; - } - *offset += wv->args->nargs; - } -} - -void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value) -{ - int i = 0; - if (!wv->args) - { - wv->args = (widget_args *) malloc (sizeof (widget_args)); - memset (wv->args, '\0', sizeof (widget_args)); - wv->args->ref_count = 1; - wv->args->nargs = 0; - wv->args->args = (ArgList) malloc (sizeof (Arg) * 10); - memset (wv->args->args, '\0', sizeof (Arg) * 10); - } - - if (wv->args->nargs > 10) - return; - - /* If the arg is already there then we must replace it. */ - for (i = 0; i < wv->args->nargs; i++) - { - if (!strcmp (wv->args->args[i].name, name)) - { - XtSetArg (wv->args->args [i], name, value); - break; - } - } - if (i >= wv->args->nargs) - { - XtSetArg (wv->args->args [wv->args->nargs], name, value); wv->args->nargs++; - } -} - -static void free_widget_value_args (widget_value* wv) -{ - if (wv->args) - { - if (--wv->args->ref_count <= 0) - { -#ifdef LWLIB_WIDGETS_MOTIF - int i; - for (i = 0; i < wv->args->nargs; i++) - { - if (!strcmp (wv->args->args[i].name, XmNfontList)) - XmFontListFree ((XmFontList)wv->args->args[i].value); - } -#endif - free (wv->args->args); - free (wv->args); - wv->args = 0; - } - } -} - -void lw_copy_widget_value_args (widget_value* val, widget_value* copy) -{ - if (val == copy || val->args == copy->args) - return; - - if (copy->args) - { - free_widget_value_args (copy); - } - - if (val->args) - { - copy->args = val->args; - copy->args->ref_count++; - } -} -