Fix T41617: Color ramp crashes user preferences

Color ramps with no handles caused issues.
This commit is contained in:
2014-08-29 16:56:19 +10:00
parent 55cacb2e63
commit 1d9e69f146
3 changed files with 15 additions and 11 deletions

View File

@@ -512,19 +512,18 @@ CBData *colorband_element_add(struct ColorBand *coba, float position)
if (coba->tot == MAXCOLORBAND) {
return NULL;
}
else if (coba->tot > 0) {
else {
CBData *xnew;
float col[4];
do_colorband(coba, position, col);
xnew = &coba->data[coba->tot];
xnew->pos = position;
xnew->r = col[0];
xnew->g = col[1];
xnew->b = col[2];
xnew->a = col[3];
if (coba->tot != 0) {
do_colorband(coba, position, &xnew->r);
}
else {
zero_v4(&xnew->r);
}
}
coba->tot++;

View File

@@ -1151,9 +1151,11 @@ void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *UNUSED(wcol), const rcti
}
/* layer: active handle */
cbd = &coba->data[coba->cur];
pos = x1 + cbd->pos * (sizex - 1) + 1;
ui_draw_colorband_handle(rect, pos, &cbd->r, display, true);
if (coba->tot != 0) {
cbd = &coba->data[coba->cur];
pos = x1 + cbd->pos * (sizex - 1) + 1;
ui_draw_colorband_handle(rect, pos, &cbd->r, display, true);
}
}
void ui_draw_but_NORMAL(uiBut *but, uiWidgetColors *wcol, const rcti *rect)

View File

@@ -5020,6 +5020,9 @@ static bool ui_numedit_but_COLORBAND(uiBut *but, uiHandleButtonData *data, int m
if (data->draglastx == mx)
return changed;
if (data->coba->tot == 0)
return changed;
dx = ((float)(mx - data->draglastx)) / BLI_rctf_size_x(&but->rect);
data->dragcbd->pos += dx;
CLAMP(data->dragcbd->pos, 0.0f, 1.0f);