X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lwlib%2Flwlib.c;h=f9c90f519c6d693bb5d02a0420d2ba02c43b3836;hb=c17cfefd00f49430bd139e11bfc580734091d728;hp=bd6e90027eed45f283289de8d38638b64cd6a7b0;hpb=59eec5f21669e81977b5b1fe9bf717cab49cf7fb;p=chise%2Fxemacs-chise.git.1 diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c index bd6e900..f9c90f5 100644 --- a/lwlib/lwlib.c +++ b/lwlib/lwlib.c @@ -264,6 +264,10 @@ merge_widget_value_args (widget_value *old, widget_value *new) lw_copy_widget_value_args (new, old); changed = True; } + else if (new->args && new->args == old->args && new->args->args_changed == True) + { + changed = True; + } return changed; } @@ -756,7 +760,11 @@ update_all_widget_values (widget_info *info, Boolean deep_p) update_one_widget_instance (instance, deep_p); for (val = info->val; val; val = val->next) - val->change = NO_CHANGE; + { + val->change = NO_CHANGE; + if (val->args) + val->args->args_changed = False; + } } void @@ -821,7 +829,11 @@ initialize_widget_instance (widget_instance *instance) update_one_widget_instance (instance, True); for (val = instance->info->val; val; val = val->next) - val->change = NO_CHANGE; + { + val->change = NO_CHANGE; + if (val->args) + val->args->args_changed = False; + } } /* strcasecmp() is not sufficiently portable or standard, @@ -841,9 +853,9 @@ ascii_strcasecmp (const char *s1, const char *s2) } static widget_creation_function -find_in_table (const char *type, widget_creation_entry *table) +find_in_table (const char *type, const widget_creation_entry table[]) { - widget_creation_entry *cur; + const widget_creation_entry *cur; for (cur = table; cur->type; cur++) if (!ascii_strcasecmp (type, cur->type)) return cur->function; @@ -1377,6 +1389,22 @@ void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset) } } +XtArgVal lw_get_value_arg (widget_value* wv, String name) +{ + int i; + if (wv->args) + { + for (i = 0; i < wv->args->nargs; i++) + { + if (!strcmp (wv->args->args[i].name, name)) + { + return wv->args->args[i].value; + } + } + } + return (XtArgVal)0; +} + void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value) { int i = 0; @@ -1393,6 +1421,8 @@ void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value) if (wv->args->nargs > 10) return; + /* Register the change. */ + wv->args->args_changed = True; /* If the arg is already there then we must replace it. */ for (i = 0; i < wv->args->nargs; i++) {