fix [#34198] Scene unit size and dyntopo detail size
authorCampbell Barton <ideasman42@gmail.com>
Tue, 12 Feb 2013 05:09:35 +0000 (05:09 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 12 Feb 2013 05:09:35 +0000 (05:09 +0000)
there were 2 bugs here.
- int buttons scaling values on input but not on display.
- pixel distances were using PROP_DISTANCE subtype - which isn't correct.

added assert incase PROP_INT values have PROP_DISTANCE subtype applied in future.

source/blender/editors/interface/interface.c
source/blender/makesrna/RNA_types.h
source/blender/makesrna/intern/rna_brush.c
source/blender/makesrna/intern/rna_define.c
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_sculpt_paint.c
source/blender/modifiers/intern/MOD_ocean.c

index 9cd86a2647c655faaa017f5e5a2f26bace2877be..d245349f2c4484c13e27392e1f8fc3b8bbdae81e 100644 (file)
@@ -1800,9 +1800,9 @@ int ui_set_but_string_eval_num(bContext *C, uiBut *but, const char *str, double
 #ifdef WITH_PYTHON
 
        if (str[0] != '\0') {
-               int is_unit_but = ui_is_but_unit(but);
+               bool is_unit_but = (ui_is_but_float(but) && ui_is_but_unit(but));
                /* only enable verbose if we won't run again with units */
-               if (BPY_button_exec(C, str, value, is_unit_but == FALSE) != -1) {
+               if (BPY_button_exec(C, str, value, is_unit_but == false) != -1) {
                        /* if the value parsed ok without unit conversion this button may still need a unit multiplier */
                        if (is_unit_but) {
                                char str_new[128];
index d3cf7dc8095c4facf1f1159f8f21bbd7eae5930b..54d2efcf4cf91da3f25653875878742d4f04a28c 100644 (file)
@@ -120,6 +120,7 @@ typedef enum PropertySubType {
        PROP_FACTOR = 15,
        PROP_ANGLE = 16 | PROP_UNIT_ROTATION,
        PROP_TIME = 17 | PROP_UNIT_TIME,
+       /* distance in 3d space, don't use for pixel distance for eg. */
        PROP_DISTANCE = 18 | PROP_UNIT_LENGTH,
 
        /* number arrays */
index 4fb26f2b007eeeb2e0e7b01e10db6042e782e646..c995d3b52c7882a4161e1aeff27a8ec243d1b14e 100644 (file)
@@ -618,7 +618,7 @@ static void rna_def_brush(BlenderRNA *brna)
        RNA_def_property_update(prop, 0, "rna_Brush_update");
        
        /* number values */
-       prop = RNA_def_property(srna, "size", PROP_INT, PROP_DISTANCE);
+       prop = RNA_def_property(srna, "size", PROP_INT, PROP_NONE);
        RNA_def_property_int_funcs(prop, NULL, "rna_Brush_set_size", NULL);
        RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS * 10);
        RNA_def_property_ui_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS, 1, 0);
@@ -645,7 +645,7 @@ static void rna_def_brush(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Spacing", "Spacing between brush daubs as a percentage of brush diameter");
        RNA_def_property_update(prop, 0, "rna_Brush_update");
 
-       prop = RNA_def_property(srna, "smooth_stroke_radius", PROP_INT, PROP_DISTANCE);
+       prop = RNA_def_property(srna, "smooth_stroke_radius", PROP_INT, PROP_NONE);
        RNA_def_property_range(prop, 10, 200);
        RNA_def_property_ui_text(prop, "Smooth Stroke Radius", "Minimum distance from last point before stroke continues");
        RNA_def_property_update(prop, 0, "rna_Brush_update");
index c32255ac645e4571a48de78cf4cfd52a1f0e09f4..97ef4dfd0a849066deaf31d055fc0a7cd8c770b3 100644 (file)
@@ -971,6 +971,14 @@ PropertyRNA *RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier
                {
                        IntPropertyRNA *iprop = (IntPropertyRNA *)prop;
 
+#ifndef RNA_RUNTIME
+                       if (subtype == PROP_DISTANCE) {
+                               fprintf(stderr, "%s: subtype does not apply to 'PROP_INT' \"%s.%s\"\n", __func__,
+                                       CONTAINER_RNA_ID(cont), identifier);
+                               DefRNA.error = 1;
+                       }
+#endif
+
                        iprop->hardmin = (subtype == PROP_UNSIGNED) ? 0 : INT_MIN;
                        iprop->hardmax = INT_MAX;
 
index 6c8242e43339639f868464bc98738dd63862acd9..e3fb06d18d8b6061ccaefc4d0bde0dabffefd8ed 100644 (file)
@@ -1870,7 +1870,7 @@ static void rna_def_unified_paint_settings(BlenderRNA  *brna)
 
        /* unified paint settings that override the equivalent settings
         * from the active brush */
-       prop = RNA_def_property(srna, "size", PROP_INT, PROP_DISTANCE);
+       prop = RNA_def_property(srna, "size", PROP_INT, PROP_NONE);
        RNA_def_property_int_funcs(prop, NULL, "rna_UnifiedPaintSettings_size_set", NULL);
        RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS * 10);
        RNA_def_property_ui_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS, 1, 0);
index ff0c9d9dec6803bbcc35cfb9e379ab12548583d9..5aa4fa810766f4c1b2c4437dd3e45002a8564857 100644 (file)
@@ -378,7 +378,7 @@ static void rna_def_sculpt(BlenderRNA  *brna)
                                 "Show diffuse color of object and overlay sculpt mask on top of it");
        RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Sculpt_ShowDiffuseColor_update");
 
-       prop = RNA_def_property(srna, "detail_size", PROP_INT, PROP_DISTANCE);
+       prop = RNA_def_property(srna, "detail_size", PROP_INT, PROP_NONE);
        RNA_def_property_ui_range(prop, 2, 100, 0, 0);
        RNA_def_property_ui_text(prop, "Detail Size", "Maximum edge length for dynamic topology sculpting (in pixels)");
 
@@ -632,7 +632,7 @@ static void rna_def_particle_edit(BlenderRNA *brna)
        RNA_def_struct_path_func(srna, "rna_ParticleBrush_path");
        RNA_def_struct_ui_text(srna, "Particle Brush", "Particle editing brush");
 
-       prop = RNA_def_property(srna, "size", PROP_INT, PROP_DISTANCE);
+       prop = RNA_def_property(srna, "size", PROP_INT, PROP_NONE);
        RNA_def_property_range(prop, 1, SHRT_MAX);
        RNA_def_property_ui_range(prop, 1, 100, 10, 3);
        RNA_def_property_ui_text(prop, "Radius", "Radius of the brush in pixels");
index 6c5bac491880eb48134cfce0ac15d67155a80db5..77250ec40253e180f8ebfc07d4ebd5a9b1b36b4a 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
  * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file blender/modifiers/intern/MOD_ocean.c
+ *  \ingroup modifiers
+ */
+
 #include "MEM_guardedalloc.h"
 
 #include "DNA_customdata_types.h"