diff options
Diffstat (limited to 'source/blender/editors/interface/interface_layout.c')
-rw-r--r-- | source/blender/editors/interface/interface_layout.c | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index b7b9a2156ef..1d98b1f22c1 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -38,9 +38,7 @@ #include "BKE_context.h" #include "BKE_global.h" #include "BKE_idprop.h" -#include "BKE_library.h" #include "BKE_screen.h" -#include "BKE_utildefines.h" #include "RNA_access.h" @@ -978,7 +976,7 @@ void uiItemR(uiLayout *layout, PointerRNA *ptr, char *propname, int flag, char * if(!prop) { ui_item_disabled(layout, propname); - printf("uiItemR: property not found: %s\n", propname); + printf("uiItemR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname); return; } @@ -991,7 +989,7 @@ void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, if(!prop || RNA_property_type(prop) != PROP_ENUM) { ui_item_disabled(layout, propname); - printf("uiItemEnumR: enum property not found: %s\n", propname); + printf("uiItemEnumR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname); return; } @@ -1006,7 +1004,7 @@ void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, char *propname if(!prop || RNA_property_type(prop) != PROP_ENUM) { ui_item_disabled(layout, propname); - printf("uiItemEnumR: enum property not found: %s\n", propname); + printf("uiItemEnumR_string: enum property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname); return; } @@ -1111,13 +1109,29 @@ static void rna_search_cb(const struct bContext *C, void *arg_but, char *str, ui if(itemptr.data == but->rnapoin.id.data) continue; - if(itemptr.type && RNA_struct_is_ID(itemptr.type)) - iconid= ui_id_icon_get((bContext*)C, itemptr.data, 1); - else + /* use filter */ + if(RNA_property_type(but->rnaprop)==PROP_POINTER) { + if(RNA_property_pointer_poll(&but->rnapoin, but->rnaprop, &itemptr)==0) + continue; + } + + if(itemptr.type && RNA_struct_is_ID(itemptr.type)) { + ID *id= itemptr.data; + char name_ui[32]; + +#if 0 /* this name is used for a string comparison and can't be modified, TODO */ + name_uiprefix_id(name_ui, id); +#else + strcpy(name_ui, id->name+2); +#endif + name= BLI_strdup(name_ui); + iconid= ui_id_icon_get((bContext*)C, id, 1); + } + else { + name= RNA_struct_name_get_alloc(&itemptr, NULL, 0); iconid = 0; - - name= RNA_struct_name_get_alloc(&itemptr, NULL, 0); - + } + if(name) { if(BLI_strcasestr(name, str)) { cis = MEM_callocN(sizeof(CollItemSearch), "CollectionItemSearch"); @@ -1126,9 +1140,9 @@ static void rna_search_cb(const struct bContext *C, void *arg_but, char *str, ui cis->iconid = iconid; BLI_addtail(items_list, cis); } - MEM_freeN(name); - } - + MEM_freeN(name); + } + i++; } RNA_PROP_END; @@ -1211,7 +1225,7 @@ void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, char *propname, st prop= RNA_struct_find_property(ptr, propname); if(!prop) { - printf("uiItemPointerR: property not found: %s\n", propname); + printf("uiItemPointerR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname); return; } @@ -1224,7 +1238,7 @@ void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, char *propname, st searchprop= RNA_struct_find_property(searchptr, searchpropname); if(!searchprop || RNA_property_type(searchprop) != PROP_COLLECTION) { - printf("uiItemPointerR: search collection property not found: %s\n", searchpropname); + printf("uiItemPointerR: search collection property not found: %s.%s\n", RNA_struct_identifier(ptr->type), searchpropname); return; } @@ -2002,6 +2016,7 @@ uiLayout *uiLayoutRow(uiLayout *layout, int align) litem->enabled= 1; litem->context= layout->context; litem->space= (align)? 0: layout->root->style->buttonspacex; + litem->w = layout->w; BLI_addtail(&layout->items, litem); uiBlockSetCurLayout(layout->root->block, litem); @@ -2021,6 +2036,7 @@ uiLayout *uiLayoutColumn(uiLayout *layout, int align) litem->enabled= 1; litem->context= layout->context; litem->space= (litem->align)? 0: layout->root->style->buttonspacey; + litem->w = layout->w; BLI_addtail(&layout->items, litem); uiBlockSetCurLayout(layout->root->block, litem); @@ -2040,6 +2056,7 @@ uiLayout *uiLayoutColumnFlow(uiLayout *layout, int number, int align) flow->litem.enabled= 1; flow->litem.context= layout->context; flow->litem.space= (flow->litem.align)? 0: layout->root->style->columnspace; + flow->litem.w = layout->w; flow->number= number; BLI_addtail(&layout->items, flow); @@ -2059,6 +2076,7 @@ static uiLayoutItemBx *ui_layout_box(uiLayout *layout, int type) box->litem.enabled= 1; box->litem.context= layout->context; box->litem.space= layout->root->style->columnspace; + box->litem.w = layout->w; BLI_addtail(&layout->items, box); uiBlockSetCurLayout(layout->root->block, &box->litem); |