Fix T38706: dropdown labels in popups not updating

Caused by own recent changes to menu handling
This commit is contained in:
Campbell Barton 2014-02-19 11:30:06 +11:00
parent 2a9e33fba5
commit 64664541b6
Notes: blender-bot 2023-02-14 11:09:49 +01:00
Referenced by issue #38720, Clear preview range is not redrawing icon
Referenced by issue #38706, UV Editor / Create new image / No text refresh for the Generator Type
3 changed files with 33 additions and 0 deletions

View File

@ -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:

View File

@ -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);

View File

@ -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)
{