Cleanup: Declare variables where initialized
Also reduce the scope of some variable declarations. This also allows making some variables constant.
This commit is contained in:
		| @@ -312,16 +312,13 @@ static bool ui_layout_variable_size(uiLayout *layout) | |||||||
| /* estimated size of text + icon */ | /* estimated size of text + icon */ | ||||||
| static int ui_text_icon_width(uiLayout *layout, const char *name, int icon, bool compact) | static int ui_text_icon_width(uiLayout *layout, const char *name, int icon, bool compact) | ||||||
| { | { | ||||||
|   bool variable; |  | ||||||
|   const int unit_x = UI_UNIT_X * (layout->scale[0] ? layout->scale[0] : 1.0f); |   const int unit_x = UI_UNIT_X * (layout->scale[0] ? layout->scale[0] : 1.0f); | ||||||
|  |  | ||||||
|   if (icon && !name[0]) { |   if (icon && !name[0]) { | ||||||
|     return unit_x; /* icon only */ |     return unit_x; /* icon only */ | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   variable = ui_layout_variable_size(layout); |   if (ui_layout_variable_size(layout)) { | ||||||
|  |  | ||||||
|   if (variable) { |  | ||||||
|     if (!icon && !name[0]) { |     if (!icon && !name[0]) { | ||||||
|       return unit_x; /* No icon or name. */ |       return unit_x; /* No icon or name. */ | ||||||
|     } |     } | ||||||
| @@ -510,7 +507,6 @@ int uiLayoutGetLocalDir(const uiLayout *layout) | |||||||
| static uiLayout *ui_item_local_sublayout(uiLayout *test, uiLayout *layout, bool align) | static uiLayout *ui_item_local_sublayout(uiLayout *test, uiLayout *layout, bool align) | ||||||
| { | { | ||||||
|   uiLayout *sub; |   uiLayout *sub; | ||||||
|  |  | ||||||
|   if (uiLayoutGetLocalDir(test) == UI_LAYOUT_HORIZONTAL) { |   if (uiLayoutGetLocalDir(test) == UI_LAYOUT_HORIZONTAL) { | ||||||
|     sub = uiLayoutRow(layout, align); |     sub = uiLayoutRow(layout, align); | ||||||
|   } |   } | ||||||
| @@ -569,17 +565,12 @@ static void ui_item_array(uiLayout *layout, | |||||||
|                           bool show_text) |                           bool show_text) | ||||||
| { | { | ||||||
|   const uiStyle *style = layout->root->style; |   const uiStyle *style = layout->root->style; | ||||||
|   uiBut *but; |  | ||||||
|   PropertyType type; |  | ||||||
|   PropertySubType subtype; |  | ||||||
|   uiLayout *sub; |  | ||||||
|   uint a, b; |  | ||||||
|  |  | ||||||
|   /* retrieve type and subtype */ |   /* retrieve type and subtype */ | ||||||
|   type = RNA_property_type(prop); |   const PropertyType type = RNA_property_type(prop); | ||||||
|   subtype = RNA_property_subtype(prop); |   const PropertySubType subtype = RNA_property_subtype(prop); | ||||||
|  |  | ||||||
|   sub = ui_item_local_sublayout(layout, layout, 1); |   uiLayout *sub = ui_item_local_sublayout(layout, layout, 1); | ||||||
|   UI_block_layout_set_current(block, sub); |   UI_block_layout_set_current(block, sub); | ||||||
|  |  | ||||||
|   /* create label */ |   /* create label */ | ||||||
| @@ -590,17 +581,15 @@ static void ui_item_array(uiLayout *layout, | |||||||
|   /* create buttons */ |   /* create buttons */ | ||||||
|   if (type == PROP_BOOLEAN && ELEM(subtype, PROP_LAYER, PROP_LAYER_MEMBER)) { |   if (type == PROP_BOOLEAN && ELEM(subtype, PROP_LAYER, PROP_LAYER_MEMBER)) { | ||||||
|     /* special check for layer layout */ |     /* special check for layer layout */ | ||||||
|     int butw, buth, unit; |  | ||||||
|     const int cols = (len >= 20) ? 2 : 1; |     const int cols = (len >= 20) ? 2 : 1; | ||||||
|     const uint colbuts = len / (2 * cols); |     const int colbuts = len / (2 * cols); | ||||||
|     uint layer_used = 0; |     uint layer_used = 0; | ||||||
|     uint layer_active = 0; |     uint layer_active = 0; | ||||||
|  |  | ||||||
|     UI_block_layout_set_current(block, uiLayoutAbsolute(layout, false)); |     UI_block_layout_set_current(block, uiLayoutAbsolute(layout, false)); | ||||||
|  |  | ||||||
|     unit = UI_UNIT_X * 0.75; |     const int butw = UI_UNIT_X * 0.75; | ||||||
|     butw = unit; |     const int buth = UI_UNIT_X * 0.75; | ||||||
|     buth = unit; |  | ||||||
|  |  | ||||||
|     if (ptr->type == &RNA_Armature) { |     if (ptr->type == &RNA_Armature) { | ||||||
|       bArmature *arm = ptr->data; |       bArmature *arm = ptr->data; | ||||||
| @@ -619,10 +608,10 @@ static void ui_item_array(uiLayout *layout, | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     for (b = 0; b < cols; b++) { |     for (int b = 0; b < cols; b++) { | ||||||
|       UI_block_align_begin(block); |       UI_block_align_begin(block); | ||||||
|  |  | ||||||
|       for (a = 0; a < colbuts; a++) { |       for (int a = 0; a < colbuts; a++) { | ||||||
|         const int layer_num = a + b * colbuts; |         const int layer_num = a + b * colbuts; | ||||||
|         const uint layer_flag = (1u << layer_num); |         const uint layer_flag = (1u << layer_num); | ||||||
|  |  | ||||||
| @@ -638,13 +627,13 @@ static void ui_item_array(uiLayout *layout, | |||||||
|           icon = ICON_BLANK1; |           icon = ICON_BLANK1; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         but = uiDefAutoButR( |         uiBut *but = uiDefAutoButR( | ||||||
|             block, ptr, prop, layer_num, "", icon, x + butw * a, y + buth, butw, buth); |             block, ptr, prop, layer_num, "", icon, x + butw * a, y + buth, butw, buth); | ||||||
|         if (subtype == PROP_LAYER_MEMBER) { |         if (subtype == PROP_LAYER_MEMBER) { | ||||||
|           UI_but_func_set(but, ui_layer_but_cb, but, POINTER_FROM_INT(layer_num)); |           UI_but_func_set(but, ui_layer_but_cb, but, POINTER_FROM_INT(layer_num)); | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       for (a = 0; a < colbuts; a++) { |       for (int a = 0; a < colbuts; a++) { | ||||||
|         const int layer_num = a + len / 2 + b * colbuts; |         const int layer_num = a + len / 2 + b * colbuts; | ||||||
|         const uint layer_flag = (1u << layer_num); |         const uint layer_flag = (1u << layer_num); | ||||||
|  |  | ||||||
| @@ -660,7 +649,8 @@ static void ui_item_array(uiLayout *layout, | |||||||
|           icon = ICON_BLANK1; |           icon = ICON_BLANK1; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         but = uiDefAutoButR(block, ptr, prop, layer_num, "", icon, x + butw * a, y, butw, buth); |         uiBut *but = uiDefAutoButR( | ||||||
|  |             block, ptr, prop, layer_num, "", icon, x + butw * a, y, butw, buth); | ||||||
|         if (subtype == PROP_LAYER_MEMBER) { |         if (subtype == PROP_LAYER_MEMBER) { | ||||||
|           UI_but_func_set(but, ui_layer_but_cb, but, POINTER_FROM_INT(layer_num)); |           UI_but_func_set(but, ui_layer_but_cb, but, POINTER_FROM_INT(layer_num)); | ||||||
|         } |         } | ||||||
| @@ -685,20 +675,20 @@ static void ui_item_array(uiLayout *layout, | |||||||
|     w /= dim_size[0]; |     w /= dim_size[0]; | ||||||
|     /* h /= dim_size[1]; */ /* UNUSED */ |     /* h /= dim_size[1]; */ /* UNUSED */ | ||||||
|  |  | ||||||
|     for (a = 0; a < len; a++) { |     for (int a = 0; a < len; a++) { | ||||||
|       col = a % dim_size[0]; |       col = a % dim_size[0]; | ||||||
|       row = a / dim_size[0]; |       row = a / dim_size[0]; | ||||||
|  |  | ||||||
|       but = uiDefAutoButR(block, |       uiBut *but = uiDefAutoButR(block, | ||||||
|                           ptr, |                                  ptr, | ||||||
|                           prop, |                                  prop, | ||||||
|                           a, |                                  a, | ||||||
|                           "", |                                  "", | ||||||
|                           ICON_NONE, |                                  ICON_NONE, | ||||||
|                           x + w * col, |                                  x + w * col, | ||||||
|                           y + (dim_size[1] * UI_UNIT_Y) - (row * UI_UNIT_Y), |                                  y + (dim_size[1] * UI_UNIT_Y) - (row * UI_UNIT_Y), | ||||||
|                           w, |                                  w, | ||||||
|                           UI_UNIT_Y); |                                  UI_UNIT_Y); | ||||||
|       if (slider && but->type == UI_BTYPE_NUM) { |       if (slider && but->type == UI_BTYPE_NUM) { | ||||||
|         uiButNumber *number_but = (uiButNumber *)but; |         uiButNumber *number_but = (uiButNumber *)but; | ||||||
|  |  | ||||||
| @@ -734,8 +724,6 @@ static void ui_item_array(uiLayout *layout, | |||||||
|       uiDefAutoButR(block, ptr, prop, -1, "", ICON_NONE, 0, 0, w, UI_UNIT_Y); |       uiDefAutoButR(block, ptr, prop, -1, "", ICON_NONE, 0, 0, w, UI_UNIT_Y); | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|       bool *boolarr = NULL; |  | ||||||
|  |  | ||||||
|       /* even if 'expand' is fale, expanding anyway */ |       /* even if 'expand' is fale, expanding anyway */ | ||||||
|  |  | ||||||
|       /* layout for known array subtypes */ |       /* layout for known array subtypes */ | ||||||
| @@ -748,6 +736,7 @@ static void ui_item_array(uiLayout *layout, | |||||||
|       } |       } | ||||||
|  |  | ||||||
|       /* show checkboxes for rna on a non-emboss block (menu for eg) */ |       /* show checkboxes for rna on a non-emboss block (menu for eg) */ | ||||||
|  |       bool *boolarr = NULL; | ||||||
|       if (type == PROP_BOOLEAN && |       if (type == PROP_BOOLEAN && | ||||||
|           ELEM(layout->root->block->emboss, UI_EMBOSS_NONE, UI_EMBOSS_PULLDOWN)) { |           ELEM(layout->root->block->emboss, UI_EMBOSS_NONE, UI_EMBOSS_PULLDOWN)) { | ||||||
|         boolarr = MEM_callocN(sizeof(bool) * len, __func__); |         boolarr = MEM_callocN(sizeof(bool) * len, __func__); | ||||||
| @@ -755,9 +744,7 @@ static void ui_item_array(uiLayout *layout, | |||||||
|       } |       } | ||||||
|  |  | ||||||
|       const char *str_buf = show_text ? str : ""; |       const char *str_buf = show_text ? str : ""; | ||||||
|       for (a = 0; a < len; a++) { |       for (int a = 0; a < len; a++) { | ||||||
|         int width_item; |  | ||||||
|  |  | ||||||
|         if (!icon_only && show_text) { |         if (!icon_only && show_text) { | ||||||
|           str[0] = RNA_property_array_item_char(prop, a); |           str[0] = RNA_property_array_item_char(prop, a); | ||||||
|         } |         } | ||||||
| @@ -765,11 +752,12 @@ static void ui_item_array(uiLayout *layout, | |||||||
|           icon = boolarr[a] ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT; |           icon = boolarr[a] ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         width_item = ((compact && type == PROP_BOOLEAN) ? |         const int width_item = ((compact && type == PROP_BOOLEAN) ? | ||||||
|                           min_ii(w, ui_text_icon_width(layout, str_buf, icon, false)) : |                                     min_ii(w, ui_text_icon_width(layout, str_buf, icon, false)) : | ||||||
|                           w); |                                     w); | ||||||
|  |  | ||||||
|         but = uiDefAutoButR(block, ptr, prop, a, str_buf, icon, 0, 0, width_item, UI_UNIT_Y); |         uiBut *but = uiDefAutoButR( | ||||||
|  |             block, ptr, prop, a, str_buf, icon, 0, 0, width_item, UI_UNIT_Y); | ||||||
|         if (slider && but->type == UI_BTYPE_NUM) { |         if (slider && but->type == UI_BTYPE_NUM) { | ||||||
|           uiButNumber *number_but = (uiButNumber *)but; |           uiButNumber *number_but = (uiButNumber *)but; | ||||||
|  |  | ||||||
| @@ -832,7 +820,6 @@ static void ui_item_enum_expand_elem_exec(uiLayout *layout, | |||||||
|   const int itemw = ui_text_icon_width(block->curlayout, icon_only ? "" : name, icon, 0); |   const int itemw = ui_text_icon_width(block->curlayout, icon_only ? "" : name, icon, 0); | ||||||
|  |  | ||||||
|   uiBut *but; |   uiBut *but; | ||||||
|  |  | ||||||
|   if (icon && name[0] && !icon_only) { |   if (icon && name[0] && !icon_only) { | ||||||
|     but = uiDefIconTextButR_prop( |     but = uiDefIconTextButR_prop( | ||||||
|         block, but_type, 0, icon, name, 0, 0, itemw, h, ptr, prop, -1, 0, value, -1, -1, NULL); |         block, but_type, 0, icon, name, 0, 0, itemw, h, ptr, prop, -1, 0, value, -1, -1, NULL); | ||||||
| @@ -886,13 +873,12 @@ static void ui_item_enum_expand_exec(uiLayout *layout, | |||||||
|    * - mont29 |    * - mont29 | ||||||
|    */ |    */ | ||||||
|  |  | ||||||
|   const EnumPropertyItem *item, *item_array; |  | ||||||
|   bool free; |  | ||||||
|  |  | ||||||
|   BLI_assert(RNA_property_type(prop) == PROP_ENUM); |   BLI_assert(RNA_property_type(prop) == PROP_ENUM); | ||||||
|  |  | ||||||
|   uiLayout *layout_radial = NULL; |  | ||||||
|   const bool radial = (layout->root->type == UI_LAYOUT_PIEMENU); |   const bool radial = (layout->root->type == UI_LAYOUT_PIEMENU); | ||||||
|  |  | ||||||
|  |   bool free; | ||||||
|  |   const EnumPropertyItem *item_array; | ||||||
|   if (radial) { |   if (radial) { | ||||||
|     RNA_property_enum_items_gettexted_all(block->evil_C, ptr, prop, &item_array, NULL, &free); |     RNA_property_enum_items_gettexted_all(block->evil_C, ptr, prop, &item_array, NULL, &free); | ||||||
|   } |   } | ||||||
| @@ -901,6 +887,7 @@ static void ui_item_enum_expand_exec(uiLayout *layout, | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* we dont want nested rows, cols in menus */ |   /* we dont want nested rows, cols in menus */ | ||||||
|  |   uiLayout *layout_radial = NULL; | ||||||
|   if (radial) { |   if (radial) { | ||||||
|     if (layout->root->layout == layout) { |     if (layout->root->layout == layout) { | ||||||
|       layout_radial = uiLayoutRadial(layout); |       layout_radial = uiLayoutRadial(layout); | ||||||
| @@ -921,7 +908,7 @@ static void ui_item_enum_expand_exec(uiLayout *layout, | |||||||
|     UI_block_layout_set_current(block, ui_item_local_sublayout(layout, layout, 1)); |     UI_block_layout_set_current(block, ui_item_local_sublayout(layout, layout, 1)); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   for (item = item_array; item->identifier; item++) { |   for (const EnumPropertyItem *item = item_array; item->identifier; item++) { | ||||||
|     const bool is_first = item == item_array; |     const bool is_first = item == item_array; | ||||||
|  |  | ||||||
|     if (!item->identifier[0]) { |     if (!item->identifier[0]) { | ||||||
| @@ -1016,9 +1003,6 @@ static uiBut *ui_item_with_label(uiLayout *layout, | |||||||
|                                  int flag) |                                  int flag) | ||||||
| { | { | ||||||
|   uiLayout *sub = layout; |   uiLayout *sub = layout; | ||||||
|   uiBut *but = NULL; |  | ||||||
|   PropertyType type; |  | ||||||
|   PropertySubType subtype; |  | ||||||
|   int prop_but_width = w_hint; |   int prop_but_width = w_hint; | ||||||
| #ifdef UI_PROP_DECORATE | #ifdef UI_PROP_DECORATE | ||||||
|   uiLayout *layout_prop_decorate = NULL; |   uiLayout *layout_prop_decorate = NULL; | ||||||
| @@ -1047,7 +1031,6 @@ static uiBut *ui_item_with_label(uiLayout *layout, | |||||||
| #endif | #endif | ||||||
|     { |     { | ||||||
|       int w_label; |       int w_label; | ||||||
|  |  | ||||||
|       if (ui_layout_variable_size(layout)) { |       if (ui_layout_variable_size(layout)) { | ||||||
|         /* w_hint is width for label in this case. |         /* w_hint is width for label in this case. | ||||||
|          * Use a default width for property button(s) */ |          * Use a default width for property button(s) */ | ||||||
| @@ -1061,9 +1044,10 @@ static uiBut *ui_item_with_label(uiLayout *layout, | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   type = RNA_property_type(prop); |   const PropertyType type = RNA_property_type(prop); | ||||||
|   subtype = RNA_property_subtype(prop); |   const PropertySubType subtype = RNA_property_subtype(prop); | ||||||
|  |  | ||||||
|  |   uiBut *but; | ||||||
|   if (subtype == PROP_FILEPATH || subtype == PROP_DIRPATH) { |   if (subtype == PROP_FILEPATH || subtype == PROP_DIRPATH) { | ||||||
|     UI_block_layout_set_current(block, uiLayoutRow(sub, true)); |     UI_block_layout_set_current(block, uiLayoutRow(sub, true)); | ||||||
|     but = uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, prop_but_width - UI_UNIT_X, h); |     but = uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, prop_but_width - UI_UNIT_X, h); | ||||||
| @@ -1204,8 +1188,6 @@ static void ui_but_tip_from_enum_item(uiBut *but, const EnumPropertyItem *item) | |||||||
| static void ui_item_disabled(uiLayout *layout, const char *name) | static void ui_item_disabled(uiLayout *layout, const char *name) | ||||||
| { | { | ||||||
|   uiBlock *block = layout->root->block; |   uiBlock *block = layout->root->block; | ||||||
|   uiBut *but; |  | ||||||
|   int w; |  | ||||||
|  |  | ||||||
|   UI_block_layout_set_current(block, layout); |   UI_block_layout_set_current(block, layout); | ||||||
|  |  | ||||||
| @@ -1213,9 +1195,10 @@ static void ui_item_disabled(uiLayout *layout, const char *name) | |||||||
|     name = ""; |     name = ""; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   w = ui_text_icon_width(layout, name, 0, 0); |   const int w = ui_text_icon_width(layout, name, 0, 0); | ||||||
|  |  | ||||||
|   but = uiDefBut(block, UI_BTYPE_LABEL, 0, name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); |   uiBut *but = uiDefBut( | ||||||
|  |       block, UI_BTYPE_LABEL, 0, name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); | ||||||
|   UI_but_disable(but, ""); |   UI_but_disable(but, ""); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -1235,8 +1218,6 @@ static uiBut *uiItemFullO_ptr_ex(uiLayout *layout, | |||||||
| { | { | ||||||
|   /* Take care to fill 'r_opptr' whatever happens. */ |   /* Take care to fill 'r_opptr' whatever happens. */ | ||||||
|   uiBlock *block = layout->root->block; |   uiBlock *block = layout->root->block; | ||||||
|   uiBut *but; |  | ||||||
|   int w; |  | ||||||
|  |  | ||||||
|   if (!name) { |   if (!name) { | ||||||
|     if (ot && ot->srna && (flag & UI_ITEM_R_ICON_ONLY) == 0) { |     if (ot && ot->srna && (flag & UI_ITEM_R_ICON_ONLY) == 0) { | ||||||
| @@ -1254,7 +1235,7 @@ static uiBut *uiItemFullO_ptr_ex(uiLayout *layout, | |||||||
|   /* create button */ |   /* create button */ | ||||||
|   UI_block_layout_set_current(block, layout); |   UI_block_layout_set_current(block, layout); | ||||||
|  |  | ||||||
|   w = ui_text_icon_width(layout, name, icon, 0); |   const int w = ui_text_icon_width(layout, name, icon, 0); | ||||||
|  |  | ||||||
|   const int prev_emboss = layout->emboss; |   const int prev_emboss = layout->emboss; | ||||||
|   if (flag & UI_ITEM_R_NO_BG) { |   if (flag & UI_ITEM_R_NO_BG) { | ||||||
| @@ -1262,6 +1243,7 @@ static uiBut *uiItemFullO_ptr_ex(uiLayout *layout, | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* create the button */ |   /* create the button */ | ||||||
|  |   uiBut *but; | ||||||
|   if (icon) { |   if (icon) { | ||||||
|     if (name[0]) { |     if (name[0]) { | ||||||
|       but = uiDefIconTextButO_ptr( |       but = uiDefIconTextButO_ptr( | ||||||
| @@ -1409,11 +1391,11 @@ static const char *ui_menu_enumpropname(uiLayout *layout, | |||||||
|                                         PropertyRNA *prop, |                                         PropertyRNA *prop, | ||||||
|                                         int retval) |                                         int retval) | ||||||
| { | { | ||||||
|   const EnumPropertyItem *item; |  | ||||||
|   bool free; |   bool free; | ||||||
|   const char *name; |   const EnumPropertyItem *item; | ||||||
|  |  | ||||||
|   RNA_property_enum_items(layout->root->block->evil_C, ptr, prop, &item, NULL, &free); |   RNA_property_enum_items(layout->root->block->evil_C, ptr, prop, &item, NULL, &free); | ||||||
|  |  | ||||||
|  |   const char *name; | ||||||
|   if (RNA_enum_name(item, retval, &name)) { |   if (RNA_enum_name(item, retval, &name)) { | ||||||
|     name = CTX_IFACE_(RNA_property_translation_context(prop), name); |     name = CTX_IFACE_(RNA_property_translation_context(prop), name); | ||||||
|   } |   } | ||||||
| @@ -1436,14 +1418,10 @@ void uiItemEnumO_ptr(uiLayout *layout, | |||||||
|                      int value) |                      int value) | ||||||
| { | { | ||||||
|   PointerRNA ptr; |   PointerRNA ptr; | ||||||
|   PropertyRNA *prop; |  | ||||||
|  |  | ||||||
|   WM_operator_properties_create_ptr(&ptr, ot); |   WM_operator_properties_create_ptr(&ptr, ot); | ||||||
|  |  | ||||||
|   if ((prop = RNA_struct_find_property(&ptr, propname))) { |   PropertyRNA *prop = RNA_struct_find_property(&ptr, propname); | ||||||
|     /* pass */ |   if (prop == NULL) { | ||||||
|   } |  | ||||||
|   else { |  | ||||||
|     RNA_warning("%s.%s not found", RNA_struct_identifier(ptr.type), propname); |     RNA_warning("%s.%s not found", RNA_struct_identifier(ptr.type), propname); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
| @@ -1502,7 +1480,6 @@ void uiItemsFullEnumO_items(uiLayout *layout, | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   uiLayout *target, *split = NULL; |   uiLayout *target, *split = NULL; | ||||||
|   const EnumPropertyItem *item; |  | ||||||
|   uiBlock *block = layout->root->block; |   uiBlock *block = layout->root->block; | ||||||
|   const bool radial = ui_layout_is_radial(layout); |   const bool radial = ui_layout_is_radial(layout); | ||||||
|  |  | ||||||
| @@ -1534,10 +1511,9 @@ void uiItemsFullEnumO_items(uiLayout *layout, | |||||||
|     target = uiLayoutColumn(split, layout->align); |     target = uiLayoutColumn(split, layout->align); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   int i; |  | ||||||
|   bool last_iter = false; |   bool last_iter = false; | ||||||
|  |   const EnumPropertyItem *item = item_array; | ||||||
|   for (i = 1, item = item_array; item->identifier && !last_iter; i++, item++) { |   for (int i = 1; item->identifier && !last_iter; i++, item++) { | ||||||
|     /* handle oversized pies */ |     /* handle oversized pies */ | ||||||
|     if (radial && (totitem > PIE_MAX_ITEMS) && (i >= PIE_MAX_ITEMS)) { |     if (radial && (totitem > PIE_MAX_ITEMS) && (i >= PIE_MAX_ITEMS)) { | ||||||
|       if (item->name) { /* only visible items */ |       if (item->name) { /* only visible items */ | ||||||
| @@ -1566,7 +1542,6 @@ void uiItemsFullEnumO_items(uiLayout *layout, | |||||||
|  |  | ||||||
|     if (item->identifier[0]) { |     if (item->identifier[0]) { | ||||||
|       PointerRNA tptr; |       PointerRNA tptr; | ||||||
|  |  | ||||||
|       WM_operator_properties_create_ptr(&tptr, ot); |       WM_operator_properties_create_ptr(&tptr, ot); | ||||||
|       if (properties) { |       if (properties) { | ||||||
|         if (tptr.data) { |         if (tptr.data) { | ||||||
| @@ -1589,8 +1564,6 @@ void uiItemsFullEnumO_items(uiLayout *layout, | |||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|       if (item->name) { |       if (item->name) { | ||||||
|         uiBut *but; |  | ||||||
|  |  | ||||||
|         if (item != item_array && !radial && split != NULL) { |         if (item != item_array && !radial && split != NULL) { | ||||||
|           target = uiLayoutColumn(split, layout->align); |           target = uiLayoutColumn(split, layout->align); | ||||||
|  |  | ||||||
| @@ -1598,6 +1571,7 @@ void uiItemsFullEnumO_items(uiLayout *layout, | |||||||
|           block->flag |= UI_BLOCK_NO_FLIP; |           block->flag |= UI_BLOCK_NO_FLIP; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         uiBut *but; | ||||||
|         if (item->icon || radial) { |         if (item->icon || radial) { | ||||||
|           uiItemL(target, item->name, item->icon); |           uiItemL(target, item->name, item->icon); | ||||||
|  |  | ||||||
| @@ -1647,24 +1621,22 @@ void uiItemsFullEnumO(uiLayout *layout, | |||||||
| { | { | ||||||
|   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ |   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ | ||||||
|  |  | ||||||
|   PointerRNA ptr; |  | ||||||
|   PropertyRNA *prop; |  | ||||||
|   uiBlock *block = layout->root->block; |  | ||||||
|  |  | ||||||
|   if (!ot || !ot->srna) { |   if (!ot || !ot->srna) { | ||||||
|     ui_item_disabled(layout, opname); |     ui_item_disabled(layout, opname); | ||||||
|     RNA_warning("%s '%s'", ot ? "unknown operator" : "operator missing srna", opname); |     RNA_warning("%s '%s'", ot ? "unknown operator" : "operator missing srna", opname); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   PointerRNA ptr; | ||||||
|   WM_operator_properties_create_ptr(&ptr, ot); |   WM_operator_properties_create_ptr(&ptr, ot); | ||||||
|   /* so the context is passed to itemf functions (some need it) */ |   /* so the context is passed to itemf functions (some need it) */ | ||||||
|   WM_operator_properties_sanitize(&ptr, false); |   WM_operator_properties_sanitize(&ptr, false); | ||||||
|   prop = RNA_struct_find_property(&ptr, propname); |   PropertyRNA *prop = RNA_struct_find_property(&ptr, propname); | ||||||
|  |  | ||||||
|   /* don't let bad properties slip through */ |   /* don't let bad properties slip through */ | ||||||
|   BLI_assert((prop == NULL) || (RNA_property_type(prop) == PROP_ENUM)); |   BLI_assert((prop == NULL) || (RNA_property_type(prop) == PROP_ENUM)); | ||||||
|  |  | ||||||
|  |   uiBlock *block = layout->root->block; | ||||||
|   if (prop && RNA_property_type(prop) == PROP_ENUM) { |   if (prop && RNA_property_type(prop) == PROP_ENUM) { | ||||||
|     const EnumPropertyItem *item_array = NULL; |     const EnumPropertyItem *item_array = NULL; | ||||||
|     int totitem; |     int totitem; | ||||||
| @@ -1721,18 +1693,14 @@ void uiItemEnumO_value(uiLayout *layout, | |||||||
|                        int value) |                        int value) | ||||||
| { | { | ||||||
|   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ |   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ | ||||||
|   PointerRNA ptr; |  | ||||||
|   PropertyRNA *prop; |  | ||||||
|  |  | ||||||
|   UI_OPERATOR_ERROR_RET(ot, opname, return ); |   UI_OPERATOR_ERROR_RET(ot, opname, return ); | ||||||
|  |  | ||||||
|  |   PointerRNA ptr; | ||||||
|   WM_operator_properties_create_ptr(&ptr, ot); |   WM_operator_properties_create_ptr(&ptr, ot); | ||||||
|  |  | ||||||
|   /* enum lookup */ |   /* enum lookup */ | ||||||
|   if ((prop = RNA_struct_find_property(&ptr, propname))) { |   PropertyRNA *prop = RNA_struct_find_property(&ptr, propname); | ||||||
|     /* pass */ |   if (prop == NULL) { | ||||||
|   } |  | ||||||
|   else { |  | ||||||
|     RNA_warning("%s.%s not found", RNA_struct_identifier(ptr.type), propname); |     RNA_warning("%s.%s not found", RNA_struct_identifier(ptr.type), propname); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
| @@ -1755,39 +1723,36 @@ void uiItemEnumO_string(uiLayout *layout, | |||||||
|                         const char *value_str) |                         const char *value_str) | ||||||
| { | { | ||||||
|   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ |   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ | ||||||
|   PointerRNA ptr; |  | ||||||
|   PropertyRNA *prop; |  | ||||||
|  |  | ||||||
|   const EnumPropertyItem *item; |  | ||||||
|   int value; |  | ||||||
|   bool free; |  | ||||||
|  |  | ||||||
|   UI_OPERATOR_ERROR_RET(ot, opname, return ); |   UI_OPERATOR_ERROR_RET(ot, opname, return ); | ||||||
|  |  | ||||||
|  |   PointerRNA ptr; | ||||||
|   WM_operator_properties_create_ptr(&ptr, ot); |   WM_operator_properties_create_ptr(&ptr, ot); | ||||||
|  |  | ||||||
|   /* enum lookup */ |   PropertyRNA *prop = RNA_struct_find_property(&ptr, propname); | ||||||
|   if ((prop = RNA_struct_find_property(&ptr, propname))) { |   if (prop == NULL) { | ||||||
|     /* no need for translations here */ |     RNA_warning("%s.%s not found", RNA_struct_identifier(ptr.type), propname); | ||||||
|     RNA_property_enum_items(layout->root->block->evil_C, &ptr, prop, &item, NULL, &free); |     return; | ||||||
|     if (item == NULL || RNA_enum_value_from_id(item, value_str, &value) == 0) { |   } | ||||||
|       if (free) { |  | ||||||
|         MEM_freeN((void *)item); |  | ||||||
|       } |  | ||||||
|       RNA_warning( |  | ||||||
|           "%s.%s, enum %s not found", RNA_struct_identifier(ptr.type), propname, value_str); |  | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |   /* enum lookup */ | ||||||
|  |   /* no need for translations here */ | ||||||
|  |   const EnumPropertyItem *item; | ||||||
|  |   bool free; | ||||||
|  |   RNA_property_enum_items(layout->root->block->evil_C, &ptr, prop, &item, NULL, &free); | ||||||
|  |  | ||||||
|  |   int value; | ||||||
|  |   if (item == NULL || RNA_enum_value_from_id(item, value_str, &value) == 0) { | ||||||
|     if (free) { |     if (free) { | ||||||
|       MEM_freeN((void *)item); |       MEM_freeN((void *)item); | ||||||
|     } |     } | ||||||
|   } |     RNA_warning("%s.%s, enum %s not found", RNA_struct_identifier(ptr.type), propname, value_str); | ||||||
|   else { |  | ||||||
|     RNA_warning("%s.%s not found", RNA_struct_identifier(ptr.type), propname); |  | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   if (free) { | ||||||
|  |     MEM_freeN((void *)item); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   RNA_property_enum_set(&ptr, prop, value); |   RNA_property_enum_set(&ptr, prop, value); | ||||||
|  |  | ||||||
|   /* same as uiItemEnumO */ |   /* same as uiItemEnumO */ | ||||||
| @@ -1806,10 +1771,9 @@ void uiItemBooleanO(uiLayout *layout, | |||||||
|                     int value) |                     int value) | ||||||
| { | { | ||||||
|   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ |   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ | ||||||
|   PointerRNA ptr; |  | ||||||
|  |  | ||||||
|   UI_OPERATOR_ERROR_RET(ot, opname, return ); |   UI_OPERATOR_ERROR_RET(ot, opname, return ); | ||||||
|  |  | ||||||
|  |   PointerRNA ptr; | ||||||
|   WM_operator_properties_create_ptr(&ptr, ot); |   WM_operator_properties_create_ptr(&ptr, ot); | ||||||
|   RNA_boolean_set(&ptr, propname, value); |   RNA_boolean_set(&ptr, propname, value); | ||||||
|  |  | ||||||
| @@ -1824,10 +1788,9 @@ void uiItemIntO(uiLayout *layout, | |||||||
|                 int value) |                 int value) | ||||||
| { | { | ||||||
|   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ |   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ | ||||||
|   PointerRNA ptr; |  | ||||||
|  |  | ||||||
|   UI_OPERATOR_ERROR_RET(ot, opname, return ); |   UI_OPERATOR_ERROR_RET(ot, opname, return ); | ||||||
|  |  | ||||||
|  |   PointerRNA ptr; | ||||||
|   WM_operator_properties_create_ptr(&ptr, ot); |   WM_operator_properties_create_ptr(&ptr, ot); | ||||||
|   RNA_int_set(&ptr, propname, value); |   RNA_int_set(&ptr, propname, value); | ||||||
|  |  | ||||||
| @@ -1842,10 +1805,10 @@ void uiItemFloatO(uiLayout *layout, | |||||||
|                   float value) |                   float value) | ||||||
| { | { | ||||||
|   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ |   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ | ||||||
|   PointerRNA ptr; |  | ||||||
|  |  | ||||||
|   UI_OPERATOR_ERROR_RET(ot, opname, return ); |   UI_OPERATOR_ERROR_RET(ot, opname, return ); | ||||||
|  |  | ||||||
|  |   PointerRNA ptr; | ||||||
|   WM_operator_properties_create_ptr(&ptr, ot); |   WM_operator_properties_create_ptr(&ptr, ot); | ||||||
|   RNA_float_set(&ptr, propname, value); |   RNA_float_set(&ptr, propname, value); | ||||||
|  |  | ||||||
| @@ -1860,10 +1823,10 @@ void uiItemStringO(uiLayout *layout, | |||||||
|                    const char *value) |                    const char *value) | ||||||
| { | { | ||||||
|   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ |   wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */ | ||||||
|   PointerRNA ptr; |  | ||||||
|  |  | ||||||
|   UI_OPERATOR_ERROR_RET(ot, opname, return ); |   UI_OPERATOR_ERROR_RET(ot, opname, return ); | ||||||
|  |  | ||||||
|  |   PointerRNA ptr; | ||||||
|   WM_operator_properties_create_ptr(&ptr, ot); |   WM_operator_properties_create_ptr(&ptr, ot); | ||||||
|   RNA_string_set(&ptr, propname, value); |   RNA_string_set(&ptr, propname, value); | ||||||
|  |  | ||||||
| @@ -1888,16 +1851,14 @@ static void ui_item_rna_size(uiLayout *layout, | |||||||
|                              int *r_w, |                              int *r_w, | ||||||
|                              int *r_h) |                              int *r_h) | ||||||
| { | { | ||||||
|   PropertyType type; |   int w = 0, h; | ||||||
|   PropertySubType subtype; |  | ||||||
|   int len, w = 0, h; |  | ||||||
|   bool is_checkbox_only = false; |  | ||||||
|  |  | ||||||
|   /* arbitrary extended width by type */ |   /* arbitrary extended width by type */ | ||||||
|   type = RNA_property_type(prop); |   PropertyType type = RNA_property_type(prop); | ||||||
|   subtype = RNA_property_subtype(prop); |   PropertySubType subtype = RNA_property_subtype(prop); | ||||||
|   len = RNA_property_array_length(ptr, prop); |   const int len = RNA_property_array_length(ptr, prop); | ||||||
|  |  | ||||||
|  |   bool is_checkbox_only = false; | ||||||
|   if (!name[0] && !icon_only) { |   if (!name[0] && !icon_only) { | ||||||
|     if (ELEM(type, PROP_STRING, PROP_POINTER)) { |     if (ELEM(type, PROP_STRING, PROP_POINTER)) { | ||||||
|       name = "non-empty text"; |       name = "non-empty text"; | ||||||
| @@ -1911,12 +1872,12 @@ static void ui_item_rna_size(uiLayout *layout, | |||||||
|     } |     } | ||||||
|     else if (type == PROP_ENUM) { |     else if (type == PROP_ENUM) { | ||||||
|       /* Find the longest enum item name, instead of using a dummy text! */ |       /* Find the longest enum item name, instead of using a dummy text! */ | ||||||
|       const EnumPropertyItem *item, *item_array; |       const EnumPropertyItem *item_array; | ||||||
|       bool free; |       bool free; | ||||||
|  |  | ||||||
|       RNA_property_enum_items_gettexted( |       RNA_property_enum_items_gettexted( | ||||||
|           layout->root->block->evil_C, ptr, prop, &item_array, NULL, &free); |           layout->root->block->evil_C, ptr, prop, &item_array, NULL, &free); | ||||||
|       for (item = item_array; item->identifier; item++) { |  | ||||||
|  |       for (const EnumPropertyItem *item = item_array; item->identifier; item++) { | ||||||
|         if (item->identifier[0]) { |         if (item->identifier[0]) { | ||||||
|           w = max_ii(w, ui_text_icon_width(layout, item->name, item->icon, compact)); |           w = max_ii(w, ui_text_icon_width(layout, item->name, item->icon, compact)); | ||||||
|         } |         } | ||||||
| @@ -2606,10 +2567,6 @@ void uiItemEnumR_string_prop(uiLayout *layout, | |||||||
|                              const char *name, |                              const char *name, | ||||||
|                              int icon) |                              int icon) | ||||||
| { | { | ||||||
|   const EnumPropertyItem *item; |  | ||||||
|   int ivalue, a; |  | ||||||
|   bool free; |  | ||||||
|  |  | ||||||
|   if (UNLIKELY(RNA_property_type(prop) != PROP_ENUM)) { |   if (UNLIKELY(RNA_property_type(prop) != PROP_ENUM)) { | ||||||
|     const char *propname = RNA_property_identifier(prop); |     const char *propname = RNA_property_identifier(prop); | ||||||
|     ui_item_disabled(layout, propname); |     ui_item_disabled(layout, propname); | ||||||
| @@ -2617,8 +2574,11 @@ void uiItemEnumR_string_prop(uiLayout *layout, | |||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   const EnumPropertyItem *item; | ||||||
|  |   bool free; | ||||||
|   RNA_property_enum_items(layout->root->block->evil_C, ptr, prop, &item, NULL, &free); |   RNA_property_enum_items(layout->root->block->evil_C, ptr, prop, &item, NULL, &free); | ||||||
|  |  | ||||||
|  |   int ivalue; | ||||||
|   if (!RNA_enum_value_from_id(item, value, &ivalue)) { |   if (!RNA_enum_value_from_id(item, value, &ivalue)) { | ||||||
|     const char *propname = RNA_property_identifier(prop); |     const char *propname = RNA_property_identifier(prop); | ||||||
|     if (free) { |     if (free) { | ||||||
| @@ -2629,7 +2589,7 @@ void uiItemEnumR_string_prop(uiLayout *layout, | |||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   for (a = 0; item[a].identifier; a++) { |   for (int a = 0; item[a].identifier; a++) { | ||||||
|     if (item[a].identifier[0] == '\0') { |     if (item[a].identifier[0] == '\0') { | ||||||
|       /* Skip enum item separators. */ |       /* Skip enum item separators. */ | ||||||
|       continue; |       continue; | ||||||
| @@ -2669,11 +2629,9 @@ void uiItemEnumR_string(uiLayout *layout, | |||||||
|  |  | ||||||
| void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname) | void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname) | ||||||
| { | { | ||||||
|   PropertyRNA *prop; |  | ||||||
|   uiBlock *block = layout->root->block; |   uiBlock *block = layout->root->block; | ||||||
|   uiBut *bt; |  | ||||||
|  |  | ||||||
|   prop = RNA_struct_find_property(ptr, propname); |   PropertyRNA *prop = RNA_struct_find_property(ptr, propname); | ||||||
|  |  | ||||||
|   if (!prop) { |   if (!prop) { | ||||||
|     ui_item_disabled(layout, propname); |     ui_item_disabled(layout, propname); | ||||||
| @@ -2686,12 +2644,12 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname | |||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   const EnumPropertyItem *item; |  | ||||||
|   int totitem; |  | ||||||
|   bool free; |  | ||||||
|   uiLayout *split = uiLayoutSplit(layout, 0.0f, false); |   uiLayout *split = uiLayoutSplit(layout, 0.0f, false); | ||||||
|   uiLayout *column = uiLayoutColumn(split, false); |   uiLayout *column = uiLayoutColumn(split, false); | ||||||
|  |  | ||||||
|  |   int totitem; | ||||||
|  |   const EnumPropertyItem *item; | ||||||
|  |   bool free; | ||||||
|   RNA_property_enum_items_gettexted(block->evil_C, ptr, prop, &item, &totitem, &free); |   RNA_property_enum_items_gettexted(block->evil_C, ptr, prop, &item, &totitem, &free); | ||||||
|  |  | ||||||
|   for (int i = 0; i < totitem; i++) { |   for (int i = 0; i < totitem; i++) { | ||||||
| @@ -2708,7 +2666,7 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         uiItemL(column, item[i].name, ICON_NONE); |         uiItemL(column, item[i].name, ICON_NONE); | ||||||
|         bt = block->buttons.last; |         uiBut *bt = block->buttons.last; | ||||||
|         bt->drawflag = UI_BUT_TEXT_LEFT; |         bt->drawflag = UI_BUT_TEXT_LEFT; | ||||||
|  |  | ||||||
|         ui_but_tip_from_enum_item(bt, &item[i]); |         ui_but_tip_from_enum_item(bt, &item[i]); | ||||||
| @@ -2731,8 +2689,6 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname | |||||||
|  |  | ||||||
| static void search_id_collection(StructRNA *ptype, PointerRNA *r_ptr, PropertyRNA **r_prop) | static void search_id_collection(StructRNA *ptype, PointerRNA *r_ptr, PropertyRNA **r_prop) | ||||||
| { | { | ||||||
|   StructRNA *srna; |  | ||||||
|  |  | ||||||
|   /* look for collection property in Main */ |   /* look for collection property in Main */ | ||||||
|   /* Note: using global Main is OK-ish here, UI shall not access other Mains anyay... */ |   /* Note: using global Main is OK-ish here, UI shall not access other Mains anyay... */ | ||||||
|   RNA_main_pointer_create(G_MAIN, r_ptr); |   RNA_main_pointer_create(G_MAIN, r_ptr); | ||||||
| @@ -2742,7 +2698,7 @@ static void search_id_collection(StructRNA *ptype, PointerRNA *r_ptr, PropertyRN | |||||||
|   RNA_STRUCT_BEGIN (r_ptr, iprop) { |   RNA_STRUCT_BEGIN (r_ptr, iprop) { | ||||||
|     /* if it's a collection and has same pointer type, we've got it */ |     /* if it's a collection and has same pointer type, we've got it */ | ||||||
|     if (RNA_property_type(iprop) == PROP_COLLECTION) { |     if (RNA_property_type(iprop) == PROP_COLLECTION) { | ||||||
|       srna = RNA_property_pointer_type(r_ptr, iprop); |       StructRNA *srna = RNA_property_pointer_type(r_ptr, iprop); | ||||||
|  |  | ||||||
|       if (ptype == srna) { |       if (ptype == srna) { | ||||||
|         *r_prop = iprop; |         *r_prop = iprop; | ||||||
| @@ -2766,13 +2722,11 @@ static void ui_rna_collection_search_arg_free_fn(void *ptr) | |||||||
| uiBut *ui_but_add_search( | uiBut *ui_but_add_search( | ||||||
|     uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *searchptr, PropertyRNA *searchprop) |     uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *searchptr, PropertyRNA *searchprop) | ||||||
| { | { | ||||||
|   StructRNA *ptype; |  | ||||||
|   PointerRNA sptr; |  | ||||||
|  |  | ||||||
|   /* for ID's we do automatic lookup */ |   /* for ID's we do automatic lookup */ | ||||||
|   if (!searchprop) { |   if (!searchprop) { | ||||||
|     if (RNA_property_type(prop) == PROP_POINTER) { |     if (RNA_property_type(prop) == PROP_POINTER) { | ||||||
|       ptype = RNA_property_pointer_type(ptr, prop); |       StructRNA *ptype = RNA_property_pointer_type(ptr, prop); | ||||||
|  |       PointerRNA sptr; | ||||||
|       search_id_collection(ptype, &sptr, &searchprop); |       search_id_collection(ptype, &sptr, &searchprop); | ||||||
|       searchptr = &sptr; |       searchptr = &sptr; | ||||||
|     } |     } | ||||||
| @@ -2833,17 +2787,11 @@ void uiItemPointerR_prop(uiLayout *layout, | |||||||
|                          const char *name, |                          const char *name, | ||||||
|                          int icon) |                          int icon) | ||||||
| { | { | ||||||
|   PropertyType type; |  | ||||||
|   uiBut *but; |  | ||||||
|   uiBlock *block; |  | ||||||
|   StructRNA *icontype; |  | ||||||
|   int w, h; |  | ||||||
|   char namestr[UI_MAX_NAME_STR]; |  | ||||||
|   const bool use_prop_sep = ((layout->item.flag & UI_ITEM_PROP_SEP) != 0); |   const bool use_prop_sep = ((layout->item.flag & UI_ITEM_PROP_SEP) != 0); | ||||||
|  |  | ||||||
|   layout_root_new_button_group(layout->root); |   layout_root_new_button_group(layout->root); | ||||||
|  |  | ||||||
|   type = RNA_property_type(prop); |   const PropertyType type = RNA_property_type(prop); | ||||||
|   if (!ELEM(type, PROP_POINTER, PROP_STRING, PROP_ENUM)) { |   if (!ELEM(type, PROP_POINTER, PROP_STRING, PROP_ENUM)) { | ||||||
|     RNA_warning("Property %s.%s must be a pointer, string or enum", |     RNA_warning("Property %s.%s must be a pointer, string or enum", | ||||||
|                 RNA_struct_identifier(ptr->type), |                 RNA_struct_identifier(ptr->type), | ||||||
| @@ -2859,6 +2807,7 @@ void uiItemPointerR_prop(uiLayout *layout, | |||||||
|  |  | ||||||
|   /* get icon & name */ |   /* get icon & name */ | ||||||
|   if (icon == ICON_NONE) { |   if (icon == ICON_NONE) { | ||||||
|  |     StructRNA *icontype; | ||||||
|     if (type == PROP_POINTER) { |     if (type == PROP_POINTER) { | ||||||
|       icontype = RNA_property_pointer_type(ptr, prop); |       icontype = RNA_property_pointer_type(ptr, prop); | ||||||
|     } |     } | ||||||
| @@ -2872,16 +2821,18 @@ void uiItemPointerR_prop(uiLayout *layout, | |||||||
|     name = RNA_property_ui_name(prop); |     name = RNA_property_ui_name(prop); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   char namestr[UI_MAX_NAME_STR]; | ||||||
|   if (use_prop_sep == false) { |   if (use_prop_sep == false) { | ||||||
|     name = ui_item_name_add_colon(name, namestr); |     name = ui_item_name_add_colon(name, namestr); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* create button */ |   /* create button */ | ||||||
|   block = uiLayoutGetBlock(layout); |   uiBlock *block = uiLayoutGetBlock(layout); | ||||||
|  |  | ||||||
|  |   int w, h; | ||||||
|   ui_item_rna_size(layout, name, icon, ptr, prop, 0, 0, false, &w, &h); |   ui_item_rna_size(layout, name, icon, ptr, prop, 0, 0, false, &w, &h); | ||||||
|   w += UI_UNIT_X; /* X icon needs more space */ |   w += UI_UNIT_X; /* X icon needs more space */ | ||||||
|   but = ui_item_with_label(layout, block, name, icon, ptr, prop, 0, 0, 0, w, h, 0); |   uiBut *but = ui_item_with_label(layout, block, name, icon, ptr, prop, 0, 0, 0, w, h, 0); | ||||||
|  |  | ||||||
|   ui_but_add_search(but, ptr, prop, searchptr, searchprop); |   ui_but_add_search(but, ptr, prop, searchptr, searchprop); | ||||||
| } | } | ||||||
| @@ -2894,15 +2845,13 @@ void uiItemPointerR(uiLayout *layout, | |||||||
|                     const char *name, |                     const char *name, | ||||||
|                     int icon) |                     int icon) | ||||||
| { | { | ||||||
|   PropertyRNA *prop, *searchprop; |  | ||||||
|  |  | ||||||
|   /* validate arguments */ |   /* validate arguments */ | ||||||
|   prop = RNA_struct_find_property(ptr, propname); |   PropertyRNA *prop = RNA_struct_find_property(ptr, propname); | ||||||
|   if (!prop) { |   if (!prop) { | ||||||
|     RNA_warning("property not found: %s.%s", RNA_struct_identifier(ptr->type), propname); |     RNA_warning("property not found: %s.%s", RNA_struct_identifier(ptr->type), propname); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|   searchprop = RNA_struct_find_property(searchptr, searchpropname); |   PropertyRNA *searchprop = RNA_struct_find_property(searchptr, searchpropname); | ||||||
|   if (!searchprop) { |   if (!searchprop) { | ||||||
|     RNA_warning("search collection property not found: %s.%s", |     RNA_warning("search collection property not found: %s.%s", | ||||||
|                 RNA_struct_identifier(searchptr->type), |                 RNA_struct_identifier(searchptr->type), | ||||||
| @@ -2944,8 +2893,6 @@ static uiBut *ui_item_menu(uiLayout *layout, | |||||||
| { | { | ||||||
|   uiBlock *block = layout->root->block; |   uiBlock *block = layout->root->block; | ||||||
|   uiLayout *heading_layout = ui_layout_heading_find(layout); |   uiLayout *heading_layout = ui_layout_heading_find(layout); | ||||||
|   uiBut *but; |  | ||||||
|   int w, h; |  | ||||||
|  |  | ||||||
|   UI_block_layout_set_current(block, layout); |   UI_block_layout_set_current(block, layout); | ||||||
|   layout_root_new_button_group(layout->root); |   layout_root_new_button_group(layout->root); | ||||||
| @@ -2957,8 +2904,8 @@ static uiBut *ui_item_menu(uiLayout *layout, | |||||||
|     icon = ICON_BLANK1; |     icon = ICON_BLANK1; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   w = ui_text_icon_width(layout, name, icon, 1); |   int w = ui_text_icon_width(layout, name, icon, 1); | ||||||
|   h = UI_UNIT_Y; |   int h = UI_UNIT_Y; | ||||||
|  |  | ||||||
|   if (layout->root->type == UI_LAYOUT_HEADER) { /* ugly .. */ |   if (layout->root->type == UI_LAYOUT_HEADER) { /* ugly .. */ | ||||||
|     if (icon == ICON_NONE && force_menu) { |     if (icon == ICON_NONE && force_menu) { | ||||||
| @@ -2978,6 +2925,7 @@ static uiBut *ui_item_menu(uiLayout *layout, | |||||||
|     ui_layout_heading_label_add(layout, heading_layout, true, true); |     ui_layout_heading_label_add(layout, heading_layout, true, true); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   uiBut *but; | ||||||
|   if (name[0] && icon) { |   if (name[0] && icon) { | ||||||
|     but = uiDefIconTextMenuBut(block, func, arg, icon, name, 0, 0, w, h, tip); |     but = uiDefIconTextMenuBut(block, func, arg, icon, name, 0, 0, w, h, tip); | ||||||
|   } |   } | ||||||
| @@ -3058,10 +3006,9 @@ void uiItemMContents(uiLayout *layout, const char *menuname) | |||||||
| void uiItemDecoratorR_prop(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index) | void uiItemDecoratorR_prop(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index) | ||||||
| { | { | ||||||
|   uiBlock *block = layout->root->block; |   uiBlock *block = layout->root->block; | ||||||
|   uiLayout *col; |  | ||||||
|  |  | ||||||
|   UI_block_layout_set_current(block, layout); |   UI_block_layout_set_current(block, layout); | ||||||
|   col = uiLayoutColumn(layout, false); |   uiLayout *col = uiLayoutColumn(layout, false); | ||||||
|   col->space = 0; |   col->space = 0; | ||||||
|   col->emboss = UI_EMBOSS_NONE; |   col->emboss = UI_EMBOSS_NONE; | ||||||
|  |  | ||||||
| @@ -3212,8 +3159,6 @@ void uiItemPopoverPanelFromGroup(uiLayout *layout, | |||||||
| static uiBut *uiItemL_(uiLayout *layout, const char *name, int icon) | static uiBut *uiItemL_(uiLayout *layout, const char *name, int icon) | ||||||
| { | { | ||||||
|   uiBlock *block = layout->root->block; |   uiBlock *block = layout->root->block; | ||||||
|   uiBut *but; |  | ||||||
|   int w; |  | ||||||
|  |  | ||||||
|   UI_block_layout_set_current(block, layout); |   UI_block_layout_set_current(block, layout); | ||||||
|   layout_root_new_button_group(layout->root); |   layout_root_new_button_group(layout->root); | ||||||
| @@ -3225,8 +3170,9 @@ static uiBut *uiItemL_(uiLayout *layout, const char *name, int icon) | |||||||
|     icon = ICON_BLANK1; |     icon = ICON_BLANK1; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   w = ui_text_icon_width(layout, name, icon, 0); |   const int w = ui_text_icon_width(layout, name, icon, 0); | ||||||
|  |  | ||||||
|  |   uiBut *but; | ||||||
|   if (icon && name[0]) { |   if (icon && name[0]) { | ||||||
|     but = uiDefIconTextBut( |     but = uiDefIconTextBut( | ||||||
|         block, UI_BTYPE_LABEL, 0, icon, name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, NULL); |         block, UI_BTYPE_LABEL, 0, icon, name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, NULL); | ||||||
| @@ -3342,7 +3288,6 @@ void uiItemV(uiLayout *layout, const char *name, int icon, int argval) | |||||||
|   /* label */ |   /* label */ | ||||||
|   uiBlock *block = layout->root->block; |   uiBlock *block = layout->root->block; | ||||||
|   int *retvalue = (block->handle) ? &block->handle->retvalue : NULL; |   int *retvalue = (block->handle) ? &block->handle->retvalue : NULL; | ||||||
|   int w; |  | ||||||
|  |  | ||||||
|   UI_block_layout_set_current(block, layout); |   UI_block_layout_set_current(block, layout); | ||||||
|  |  | ||||||
| @@ -3353,7 +3298,7 @@ void uiItemV(uiLayout *layout, const char *name, int icon, int argval) | |||||||
|     icon = ICON_BLANK1; |     icon = ICON_BLANK1; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   w = ui_text_icon_width(layout, name, icon, 0); |   const int w = ui_text_icon_width(layout, name, icon, 0); | ||||||
|  |  | ||||||
|   if (icon && name[0]) { |   if (icon && name[0]) { | ||||||
|     uiDefIconTextButI(block, |     uiDefIconTextButI(block, | ||||||
| @@ -3501,9 +3446,6 @@ void uiItemMenuEnumO_ptr(uiLayout *layout, | |||||||
|                          const char *name, |                          const char *name, | ||||||
|                          int icon) |                          int icon) | ||||||
| { | { | ||||||
|   MenuItemLevel *lvl; |  | ||||||
|   uiBut *but; |  | ||||||
|  |  | ||||||
|   /* Caller must check */ |   /* Caller must check */ | ||||||
|   BLI_assert(ot->srna != NULL); |   BLI_assert(ot->srna != NULL); | ||||||
|  |  | ||||||
| @@ -3515,12 +3457,12 @@ void uiItemMenuEnumO_ptr(uiLayout *layout, | |||||||
|     icon = ICON_BLANK1; |     icon = ICON_BLANK1; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   lvl = MEM_callocN(sizeof(MenuItemLevel), "MenuItemLevel"); |   MenuItemLevel *lvl = MEM_callocN(sizeof(MenuItemLevel), "MenuItemLevel"); | ||||||
|   BLI_strncpy(lvl->opname, ot->idname, sizeof(lvl->opname)); |   BLI_strncpy(lvl->opname, ot->idname, sizeof(lvl->opname)); | ||||||
|   BLI_strncpy(lvl->propname, propname, sizeof(lvl->propname)); |   BLI_strncpy(lvl->propname, propname, sizeof(lvl->propname)); | ||||||
|   lvl->opcontext = layout->root->opcontext; |   lvl->opcontext = layout->root->opcontext; | ||||||
|  |  | ||||||
|   but = ui_item_menu(layout, name, icon, menu_item_enum_opname_menu, NULL, lvl, NULL, true); |   uiBut *but = ui_item_menu(layout, name, icon, menu_item_enum_opname_menu, NULL, lvl, NULL, true); | ||||||
|  |  | ||||||
|   /* add hotkey here, lower UI code can't detect it */ |   /* add hotkey here, lower UI code can't detect it */ | ||||||
|   if ((layout->root->block->flag & UI_BLOCK_LOOP) && (ot->prop && ot->invoke)) { |   if ((layout->root->block->flag & UI_BLOCK_LOOP) && (ot->prop && ot->invoke)) { | ||||||
| @@ -3591,9 +3533,7 @@ void uiItemMenuEnumR_prop( | |||||||
| void uiItemMenuEnumR( | void uiItemMenuEnumR( | ||||||
|     uiLayout *layout, struct PointerRNA *ptr, const char *propname, const char *name, int icon) |     uiLayout *layout, struct PointerRNA *ptr, const char *propname, const char *name, int icon) | ||||||
| { | { | ||||||
|   PropertyRNA *prop; |   PropertyRNA *prop = RNA_struct_find_property(ptr, propname); | ||||||
|  |  | ||||||
|   prop = RNA_struct_find_property(ptr, propname); |  | ||||||
|   if (!prop) { |   if (!prop) { | ||||||
|     ui_item_disabled(layout, propname); |     ui_item_disabled(layout, propname); | ||||||
|     RNA_warning("property not found: %s.%s", RNA_struct_identifier(ptr->type), propname); |     RNA_warning("property not found: %s.%s", RNA_struct_identifier(ptr->type), propname); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user