Fix T46379: Bad behavior of bUnit_ToUnitAltName() with default units.
authorBastien Montagne <montagne29@wanadoo.fr>
Mon, 5 Oct 2015 09:55:52 +0000 (11:55 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Mon, 5 Oct 2015 10:02:02 +0000 (12:02 +0200)
It would simply remove default units (in most case), cannot see any good reason for such behavior?
Might work in case default unit is the only one present, but breaks consistency (and it may not be
always obvious for user which unit it is). Comes from original patch from five years ago, rB7d8f0fce.

This will break keyboard-setting of values, e.g. '2m 33.4cm' would become '2 33.4cm',
totally useless and invalid entry!

source/blender/blenkernel/intern/unit.c

index 64d561491e20eefb64c0e83cdd4221cc269706b5..ab8fbabd3295b3ec3733dc10cc68ae151dd38ec6 100644 (file)
@@ -730,11 +730,10 @@ void bUnit_ToUnitAltName(char *str, int len_max, const char *orig_str, int syste
        bUnitCollection *usys = unit_get_system(system, type);
 
        bUnitDef *unit;
-       bUnitDef *unit_def = unit_default(usys);
 
        /* find and substitute all units */
        for (unit = usys->units; unit->name; unit++) {
-               if (len_max > 0 && (unit->name_alt || unit == unit_def)) {
+               if (len_max > 0 && unit->name_alt) {
                        const char *found = unit_find_str(orig_str, unit->name_short);
                        if (found) {
                                int offset = (int)(found - orig_str);