diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-02-19 04:30:06 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-02-19 04:35:45 +0400 |
commit | 64664541b696998e3b12bfcd43fa9cc892d1e758 (patch) | |
tree | ad1d45e327f004ccf4fe4c55e846f35ff43fb33a /source | |
parent | 2a9e33fba56c0d99aa224c91860be25783363ad5 (diff) |
Fix T38706: dropdown labels in popups not updating
Caused by own recent changes to menu handling
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/interface/interface.c | 19 | ||||
-rw-r--r-- | source/blender/makesrna/RNA_access.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_access.c | 13 |
3 files changed, 33 insertions, 0 deletions
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) { |