Index: trunk/src_plugins/dialogs/dlg_pref.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref.c (revision 35847) +++ trunk/src_plugins/dialogs/dlg_pref.c (revision 35848) @@ -110,6 +110,11 @@ static const char *role_names[] = { "user", "project", "design", "cli", NULL }; static const rnd_conf_role_t roles[] = { RND_CFR_USER, RND_CFR_PROJECT, RND_CFR_DESIGN, RND_CFR_CLI, 0 }; +pref_ctx_t *Rnd_pref_get_ctx(rnd_hidlib_t *hidlib) +{ + return &pref_ctx; +} + static lht_node_t *pref_dlg2conf_pre(pref_ctx_t *ctx) { lht_node_t *m; Index: trunk/src_plugins/dialogs/dlg_pref.h =================================================================== --- trunk/src_plugins/dialogs/dlg_pref.h (revision 35847) +++ trunk/src_plugins/dialogs/dlg_pref.h (revision 35848) @@ -92,4 +92,8 @@ extern const char pcb_acth_Preferences[]; fgw_error_t pcb_act_Preferences(fgw_arg_t *res, int argc, fgw_arg_t *argv); +/* In event callbacks no context is available; return context baed on hidlib */ +pref_ctx_t *Rnd_pref_get_ctx(rnd_hidlib_t *hidlib); + + #endif Index: trunk/src_plugins/dialogs/dlg_pref_lib.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_lib.c (revision 35847) +++ trunk/src_plugins/dialogs/dlg_pref_lib.c (revision 35848) @@ -53,7 +53,7 @@ static void pref_lib_update_buttons(void) { - pref_ctx_t *ctx = &pref_ctx; + pref_ctx_t *ctx = Rnd_pref_get_ctx(&PCB->hidlib); DEF_TABDATA; rnd_hid_attribute_t *attr = &ctx->dlg[tabdata->wlist]; rnd_hid_row_t *r = rnd_dad_tree_get_selected(attr); @@ -82,7 +82,7 @@ the widget first */ static void pref_lib_conf2dlg_pre(rnd_conf_native_t *cfg, int arr_idx) { - pref_ctx_t *ctx = &pref_ctx; + pref_ctx_t *ctx = Rnd_pref_get_ctx(&PCB->hidlib); DEF_TABDATA; rnd_hid_attribute_t *attr; rnd_hid_tree_t *tree; @@ -117,7 +117,7 @@ in all widget rows from the conf */ static void pref_lib_conf2dlg_post(rnd_conf_native_t *cfg, int arr_idx) { - pref_ctx_t *ctx = &pref_ctx; + pref_ctx_t *ctx = Rnd_pref_get_ctx(&PCB->hidlib); DEF_TABDATA; rnd_conf_listitem_t *i; int idx; Index: trunk/src_plugins/dialogs/dlg_pref_sizes.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_sizes.c (revision 35847) +++ trunk/src_plugins/dialogs/dlg_pref_sizes.c (revision 35848) @@ -90,7 +90,7 @@ static void pref_isle_brd2dlg(rnd_conf_native_t *cfg, int arr_idx) { - pref_ctx_t *ctx = &pref_ctx; + pref_ctx_t *ctx = Rnd_pref_get_ctx(&PCB->hidlib); DEF_TABDATA; if ((tabdata->lock) || (!ctx->active))