UI: non editable template_icon_views are rendered as label
authorJeroen Bakker <j.bakker@atmind.nl>
Tue, 12 Jun 2018 06:43:09 +0000 (08:43 +0200)
committerJeroen Bakker <j.bakker@atmind.nl>
Tue, 12 Jun 2018 06:45:38 +0000 (08:45 +0200)
This is also a way to render an large preview icon without the selection
control. This is used by the studiolights in the userprefs that only
displays the preview of the light.

source/blender/editors/interface/interface_templates.c

index 9978726..45069ad 100644 (file)
@@ -2266,13 +2266,20 @@ void uiTemplateIconView(uiLayout *layout, PointerRNA *ptr, const char *propname,
        value = RNA_property_enum_get(ptr, prop);
        RNA_enum_icon_from_value(items, value, &icon);
 
-       cb_args = MEM_callocN(sizeof(IconViewMenuArgs), __func__);
-       cb_args->ptr = *ptr;
-       cb_args->prop = prop;
-       cb_args->show_labels = show_labels;
-       cb_args->icon_scale = icon_scale;
+       
+       if (RNA_property_editable(ptr, prop)) {
+               cb_args = MEM_callocN(sizeof(IconViewMenuArgs), __func__);
+               cb_args->ptr = *ptr;
+               cb_args->prop = prop;
+               cb_args->show_labels = show_labels;
+               cb_args->icon_scale = icon_scale;
+
+               but = uiDefBlockButN(block, ui_icon_view_menu_cb, cb_args, "", 0, 0, UI_UNIT_X * 6, UI_UNIT_Y * 6, "");
+       }
+       else {
+               but = uiDefIconBut(block, UI_BTYPE_LABEL, 0, ICON_X, 0, 0, UI_UNIT_X * 6, UI_UNIT_Y * 6, NULL, 0.0, 0.0, 0.0, 0.0, "");
+       }
 
-       but = uiDefBlockButN(block, ui_icon_view_menu_cb, cb_args, "", 0, 0, UI_UNIT_X * 6, UI_UNIT_Y * 6, "");
 
        ui_def_but_icon(but, icon, UI_HAS_ICON | UI_BUT_ICON_PREVIEW);