Index: trunk/src_plugins/ar_extern/ar_extern.c =================================================================== --- trunk/src_plugins/ar_extern/ar_extern.c (revision 32370) +++ trunk/src_plugins/ar_extern/ar_extern.c (revision 32371) @@ -78,6 +78,7 @@ int len; rnd_export_opt_t *confkeys; rnd_hid_attr_val_t *val; + int *w; /* widget ID when dialog is open */ } router_method_t; typedef struct router_api_s { @@ -102,6 +103,7 @@ } free(method->confkeys); + free(method->w); free(method->name); free(method->desc); free(method->val); @@ -158,6 +160,7 @@ rapi->methods[m].len++; printf(" %s: %s\n", cfg->name, cfg->help_text); } + rapi->methods[m].w = malloc(sizeof(int) * rapi->methods[m].len); rapi->methods[m].val = malloc(sizeof(rnd_hid_attr_val_t) * rapi->methods[m].len); for(i = 0, cfg = rapi->methods[m].confkeys; cfg->name != NULL; i++, cfg++) rapi->methods[m].val[i] = cfg->default_val; Index: trunk/src_plugins/ar_extern/dlg_extroute.c =================================================================== --- trunk/src_plugins/ar_extern/dlg_extroute.c (revision 32370) +++ trunk/src_plugins/ar_extern/dlg_extroute.c (revision 32371) @@ -70,6 +70,7 @@ for(mn = 0; mn < a->num_methods; mn++) { router_method_t *m = &a->methods[mn]; char *title; + int *wid; rnd_export_opt_t *cfg; RND_DAD_BEGIN_VBOX(ar_ctx.dlg); @@ -81,7 +82,7 @@ RND_DAD_LABEL(ar_ctx.dlg, m->desc); free(title); - for(cfg = m->confkeys; cfg->name != NULL; cfg++) { + for(cfg = m->confkeys, wid = m->w; cfg->name != NULL; cfg++, wid++) { RND_DAD_BEGIN_HBOX(ar_ctx.dlg); switch(cfg->type) { case RND_HATT_BOOL: @@ -110,6 +111,7 @@ default: break; } + *wid = RND_DAD_CURRENT(ar_ctx.dlg); RND_DAD_LABEL(ar_ctx.dlg, cfg->name); RND_DAD_END(ar_ctx.dlg); }