Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-12-11 17:32:13 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-12-11 17:33:41 +0400
commit09b859d03f0ee138c4273ef8460e91d9888387a1 (patch)
tree9cb9387ee8938f1d9bdbf6025a5aac2ba0124f50
parentc35fb528c5337b8c4597802b47ad96d7295d476b (diff)
UI: change how number button strings are concatenated (to easy add new suffix)
-rw-r--r--source/blender/editors/interface/interface.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index aaaf64ba86e..45a73e217fe 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -2438,36 +2438,47 @@ void ui_check_but(uiBut *but)
case NUMSLI:
if (!but->editstr) {
+ const char *drawstr_suffix = NULL;
+ size_t slen;
+
UI_GET_BUT_VALUE_INIT(but, value);
+ slen = BLI_strncpy_rlen(but->drawstr, but->str, sizeof(but->drawstr));
+
if (ui_is_but_float(but)) {
if (value == (double) FLT_MAX) {
- BLI_snprintf(but->drawstr, sizeof(but->drawstr), "%sinf", but->str);
+ slen += BLI_strncpy_rlen(but->drawstr + slen, "inf", sizeof(but->drawstr) - slen);
}
else if (value == (double) -FLT_MAX) {
- BLI_snprintf(but->drawstr, sizeof(but->drawstr), "%s-inf", but->str);
+ slen += BLI_strncpy_rlen(but->drawstr + slen, "-inf", sizeof(but->drawstr) - slen);
}
/* support length type buttons */
else if (ui_is_but_unit(but)) {
char new_str[sizeof(but->drawstr)];
ui_get_but_string_unit(but, new_str, sizeof(new_str), value, TRUE, -1);
- BLI_snprintf(but->drawstr, sizeof(but->drawstr), "%s%s", but->str, new_str);
+ slen += BLI_strncpy_rlen(but->drawstr + slen, new_str, sizeof(but->drawstr) - slen);
}
else {
const int prec = ui_but_float_precision(but, value);
- BLI_snprintf(but->drawstr, sizeof(but->drawstr), "%s%.*f", but->str, prec, value);
+ slen += BLI_snprintf(but->drawstr + slen, sizeof(but->drawstr) - slen, "%.*f", prec, value);
}
}
else {
- BLI_snprintf(but->drawstr, sizeof(but->drawstr), "%s%d", but->str, (int)value);
+ slen += BLI_snprintf(but->drawstr + slen, sizeof(but->drawstr) - slen, "%d", (int)value);
}
if (but->rnaprop) {
PropertySubType pstype = RNA_property_subtype(but->rnaprop);
- if (pstype == PROP_PERCENTAGE)
- strcat(but->drawstr, "%");
+ if (pstype == PROP_PERCENTAGE) {
+ drawstr_suffix = "%";
+ }
+ }
+
+ if (drawstr_suffix) {
+ BLI_strncpy(but->drawstr + slen, drawstr_suffix, sizeof(but->drawstr) - slen);
}
+
}
break;