From 64664541b696998e3b12bfcd43fa9cc892d1e758 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 19 Feb 2014 11:30:06 +1100 Subject: Fix T38706: dropdown labels in popups not updating Caused by own recent changes to menu handling --- source/blender/editors/interface/interface.c | 19 +++++++++++++++++++ source/blender/makesrna/RNA_access.h | 1 + source/blender/makesrna/intern/rna_access.c | 13 +++++++++++++ 3 files changed, 33 insertions(+) (limited to 'source') diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 68dd50f54ca..2e7bfb162ae 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2491,6 +2491,25 @@ void ui_check_but(uiBut *but) /* name: */ switch (but->type) { + + case MENU: + if (BLI_rctf_size_x(&but->rect) > 24.0f) { + /* only needed for menus in popup blocks that don't recreate buttons on redraw */ + if (but->block->flag & UI_BLOCK_LOOP) { + if (but->rnaprop && (RNA_property_type(but->rnaprop) == PROP_ENUM)) { + int value = RNA_property_enum_get(&but->rnapoin, but->rnaprop); + const char *buf; + if (RNA_property_enum_name_gettexted(but->block->evil_C, + &but->rnapoin, but->rnaprop, value, &buf)) + { + BLI_strncpy(but->str, buf, sizeof(but->strdata)); + } + } + } + BLI_strncpy(but->drawstr, but->str, sizeof(but->drawstr)); + } + break; + case NUM: case NUMSLI: diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 0941f022901..17dbd99a3b0 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -793,6 +793,7 @@ void RNA_property_enum_items_gettexted(struct bContext *C, PointerRNA *ptr, Prop bool RNA_property_enum_value(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *r_value); bool RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier); bool RNA_property_enum_name(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name); +bool RNA_property_enum_name_gettexted(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name); int RNA_property_enum_bitflag_identifiers(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier); StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 0ea55a08d75..4bb04b792ef 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -1437,6 +1437,19 @@ bool RNA_property_enum_name(bContext *C, PointerRNA *ptr, PropertyRNA *prop, con return false; } +bool RNA_property_enum_name_gettexted(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name) +{ + bool result; + + result = RNA_property_enum_name(C, ptr, prop, value, name); + + if (result) { + *name = BLF_pgettext(prop->translation_context, *name); + } + + return result; +} + int RNA_property_enum_bitflag_identifiers(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier) { -- cgit v1.2.3