Revision: 37101 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37101 Author: blendix Date: 2011-06-02 14:18:51 +0000 (Thu, 02 Jun 2011) Log Message: ----------- UI: fix two issues with expanded enum property buttons: * they were too slow for dynamic python enums, calling the callback to list the items for each button, to get a tooltip * enum tooltips sometimes were showing the same description twice
Modified Paths: -------------- trunk/blender/source/blender/editors/interface/interface.c trunk/blender/source/blender/editors/interface/interface_handlers.c trunk/blender/source/blender/editors/interface/interface_intern.h trunk/blender/source/blender/editors/interface/interface_regions.c Modified: trunk/blender/source/blender/editors/interface/interface.c =================================================================== --- trunk/blender/source/blender/editors/interface/interface.c 2011-06-02 14:15:07 UTC (rev 37100) +++ trunk/blender/source/blender/editors/interface/interface.c 2011-06-02 14:18:51 UTC (rev 37101) @@ -1668,7 +1668,7 @@ return 0; } -void ui_set_but_default(bContext *C, uiBut *UNUSED(but), short all) +void ui_set_but_default(bContext *C, short all) { PointerRNA ptr; @@ -2481,28 +2481,8 @@ icon= RNA_property_ui_icon(prop); } } - - if(!tip) { - if(type == ROW && proptype == PROP_ENUM) { - EnumPropertyItem *item; - int i, totitem, free; - - RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free); - - for(i=0; i<totitem; i++) { - if(item[i].identifier[0] && item[i].value == (int)max) { - if(item[i].description[0]) - tip= item[i].description; - break; - } - } - - if(free) - MEM_freeN(item); - } - } - if(!tip) + if(!tip && proptype != PROP_ENUM) tip= RNA_property_ui_description(prop); if(min == max || a1 == -1 || a2 == -1) { Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c =================================================================== --- trunk/blender/source/blender/editors/interface/interface_handlers.c 2011-06-02 14:15:07 UTC (rev 37100) +++ trunk/blender/source/blender/editors/interface/interface_handlers.c 2011-06-02 14:18:51 UTC (rev 37101) @@ -4445,7 +4445,7 @@ else if(ELEM(event->type, DELKEY, PADPERIOD) && event->val == KM_PRESS) { /* ctrl+del - reset active button; del - reset a whole array*/ if (!(ELEM3(but->type, HSVCIRCLE, HSVCUBE, HISTOGRAM))) - ui_set_but_default(C, but, !event->ctrl); + ui_set_but_default(C, !event->ctrl); } /* handle menu */ else if(event->type == RIGHTMOUSE && event->val == KM_PRESS) { Modified: trunk/blender/source/blender/editors/interface/interface_intern.h =================================================================== --- trunk/blender/source/blender/editors/interface/interface_intern.h 2011-06-02 14:15:07 UTC (rev 37100) +++ trunk/blender/source/blender/editors/interface/interface_intern.h 2011-06-02 14:18:51 UTC (rev 37101) @@ -369,7 +369,7 @@ extern int ui_set_but_string(struct bContext *C, uiBut *but, const char *str); extern int ui_get_but_string_max_length(uiBut *but); -extern void ui_set_but_default(struct bContext *C, uiBut *but, short all); +extern void ui_set_but_default(struct bContext *C, short all); extern void ui_set_but_soft_range(uiBut *but, double value); Modified: trunk/blender/source/blender/editors/interface/interface_regions.c =================================================================== --- trunk/blender/source/blender/editors/interface/interface_regions.c 2011-06-02 14:15:07 UTC (rev 37100) +++ trunk/blender/source/blender/editors/interface/interface_regions.c 2011-06-02 14:18:51 UTC (rev 37101) @@ -370,6 +370,27 @@ data->color[data->totline]= 0xFFFFFF; data->totline++; } + + if(but->type == ROW) { + EnumPropertyItem *item; + int i, totitem, free; + + RNA_property_enum_items(C, &but->rnapoin, but->rnaprop, &item, &totitem, &free); + + for(i=0; i<totitem; i++) { + if(item[i].identifier[0] && item[i].value == (int)but->hardmax) { + if(item[i].description[0]) { + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "%s: %s", item[i].name, item[i].description); + data->color[data->totline]= 0xFFFFFF; + data->totline++; + } + break; + } + } + + if(free) + MEM_freeN(item); + } } if(but->tip && strlen(but->tip)) { _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs