Index: src_plugins/dialogs/dlg_pref.c =================================================================== --- src_plugins/dialogs/dlg_pref.c (revision 35841) +++ src_plugins/dialogs/dlg_pref.c (revision 35842) @@ -442,9 +442,7 @@ if (!pref_ctx.active) return; - pref_sizes_brd2dlg(ctx); - pref_board_brd2dlg(ctx); - pref_color_brd2dlg(ctx); + call_hook(ctx, board_changed_cb); pref_win_brd2dlg(ctx); } @@ -454,9 +452,7 @@ if (!pref_ctx.active) return; - pref_sizes_brd2dlg(ctx); - pref_board_brd2dlg(ctx); - pref_color_brd2dlg(ctx); + call_hook(ctx, meta_changed_cb); pref_win_brd2dlg(ctx); } Index: src_plugins/dialogs/dlg_pref.h =================================================================== --- src_plugins/dialogs/dlg_pref.h (revision 35841) +++ src_plugins/dialogs/dlg_pref.h (revision 35842) @@ -31,6 +31,9 @@ void (*close_cb)(pref_ctx_t *ctx); /* called from the dialog box is close_cb event */ void (*create_cb)(pref_ctx_t *ctx); /* called while the dialog box is being created: create widgets in current tab */ + void (*board_changed_cb)(pref_ctx_t *ctx); /* called if the board got replaced (e.g. new board loaded) */ + void (*meta_changed_cb)(pref_ctx_t *ctx); /* called if the board metadata changed */ + void (*spare_f1)(); void (*spare_f2)(); void (*spare_f3)(); void (*spare_f4)(); void *spare_p1, *spare_p2, *spare_p3, *spare_p4; long spare_l1, spare_l2, spare_l3, spare_l4; Index: src_plugins/dialogs/dlg_pref_board.c =================================================================== --- src_plugins/dialogs/dlg_pref_board.c (revision 35841) +++ src_plugins/dialogs/dlg_pref_board.c (revision 35842) @@ -102,7 +102,8 @@ static const Rnd_pref_tab_hook_t pref_board = { "Board meta", NULL, NULL, - pcb_dlg_pref_board_create + pcb_dlg_pref_board_create, + pref_board_brd2dlg, pref_board_brd2dlg /* board change, meta change */ }; static void pcb_dlg_pref_board_init(pref_ctx_t *ctx, int tab) Index: src_plugins/dialogs/dlg_pref_color.c =================================================================== --- src_plugins/dialogs/dlg_pref_color.c (revision 35841) +++ src_plugins/dialogs/dlg_pref_color.c (revision 35842) @@ -171,7 +171,8 @@ static const Rnd_pref_tab_hook_t pref_color = { "Colors", pcb_dlg_pref_color_open, pcb_dlg_pref_color_close, - pcb_dlg_pref_color_create + pcb_dlg_pref_color_create, + pref_color_brd2dlg, pref_color_brd2dlg /* board change, meta change */ }; static void pcb_dlg_pref_color_init(pref_ctx_t *ctx, int tab) Index: src_plugins/dialogs/dlg_pref_general.c =================================================================== --- src_plugins/dialogs/dlg_pref_general.c (revision 35841) +++ src_plugins/dialogs/dlg_pref_general.c (revision 35842) @@ -95,7 +95,8 @@ static const Rnd_pref_tab_hook_t pref_general = { "General", NULL, pcb_dlg_pref_general_close, - pcb_dlg_pref_general_create + pcb_dlg_pref_general_create, + NULL, NULL }; static void pcb_dlg_pref_general_init(pref_ctx_t *ctx, int tab) Index: src_plugins/dialogs/dlg_pref_layer.c =================================================================== --- src_plugins/dialogs/dlg_pref_layer.c (revision 35841) +++ src_plugins/dialogs/dlg_pref_layer.c (revision 35842) @@ -63,7 +63,8 @@ static const Rnd_pref_tab_hook_t pref_layer = { "Layers", NULL, NULL, - pcb_dlg_pref_layer_create + pcb_dlg_pref_layer_create, + NULL, NULL }; static void pcb_dlg_pref_layer_init(pref_ctx_t *ctx, int tab) Index: src_plugins/dialogs/dlg_pref_lib.c =================================================================== --- src_plugins/dialogs/dlg_pref_lib.c (revision 35841) +++ src_plugins/dialogs/dlg_pref_lib.c (revision 35842) @@ -470,7 +470,8 @@ static const Rnd_pref_tab_hook_t pref_lib = { "Library", pcb_dlg_pref_lib_open, pcb_dlg_pref_lib_close, - pcb_dlg_pref_lib_create + pcb_dlg_pref_lib_create, + NULL, NULL }; void pcb_dlg_pref_lib_init(pref_ctx_t *ctx, int tab) Index: src_plugins/dialogs/dlg_pref_sizes.c =================================================================== --- src_plugins/dialogs/dlg_pref_sizes.c (revision 35841) +++ src_plugins/dialogs/dlg_pref_sizes.c (revision 35842) @@ -160,7 +160,8 @@ static const Rnd_pref_tab_hook_t pref_sizes = { "Sizes & DRC", NULL, pcb_dlg_pref_sizes_close, - pcb_dlg_pref_sizes_create + pcb_dlg_pref_sizes_create, + pref_sizes_brd2dlg, pref_sizes_brd2dlg /* board change, meta change */ }; static void pcb_dlg_pref_sizes_init(pref_ctx_t *ctx, int tab)