diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-01-18 01:31:39 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-01-18 01:31:39 +0300 |
commit | 2757469824bbe98d943b42f57ff23782b97a3abf (patch) | |
tree | 8fcb55970a4e1e5b42605a245823076df1f3b195 /source/blender/editors/interface | |
parent | 7a0cc955cc0b13e69412ff64b83bea1fcbbb9206 (diff) |
UI: only reset eyedropper on cancel when set
Diffstat (limited to 'source/blender/editors/interface')
3 files changed, 17 insertions, 4 deletions
diff --git a/source/blender/editors/interface/interface_eyedropper_color.c b/source/blender/editors/interface/interface_eyedropper_color.c index 322d368dc27..9448585a563 100644 --- a/source/blender/editors/interface/interface_eyedropper_color.c +++ b/source/blender/editors/interface/interface_eyedropper_color.c @@ -71,6 +71,7 @@ typedef struct Eyedropper { int index; bool is_undo; + bool is_set; float init_col[3]; /* for resetting on cancel */ bool accum_start; /* has mouse been pressed */ @@ -212,6 +213,7 @@ static void eyedropper_color_set(bContext *C, Eyedropper *eye, const float col[3 } RNA_property_float_set_array(&eye->ptr, eye->prop, col_conv); + eye->is_set = true; RNA_property_update(C, &eye->ptr, eye->prop); } @@ -245,7 +247,9 @@ static void eyedropper_color_sample(bContext *C, Eyedropper *eye, int mx, int my static void eyedropper_cancel(bContext *C, wmOperator *op) { Eyedropper *eye = op->customdata; - eyedropper_color_set(C, eye, eye->init_col); + if (eye->is_set) { + eyedropper_color_set(C, eye, eye->init_col); + } eyedropper_exit(C, op); } diff --git a/source/blender/editors/interface/interface_eyedropper_colorband.c b/source/blender/editors/interface/interface_eyedropper_colorband.c index dd4524c9066..805e1177d87 100644 --- a/source/blender/editors/interface/interface_eyedropper_colorband.c +++ b/source/blender/editors/interface/interface_eyedropper_colorband.c @@ -73,6 +73,7 @@ typedef struct EyedropperColorband { PointerRNA ptr; PropertyRNA *prop; bool is_undo; + bool is_set; } EyedropperColorband; /* For user-data only. */ @@ -132,6 +133,7 @@ static void eyedropper_colorband_sample_point(bContext *C, EyedropperColorband * eye->color_buffer_len += 1; eye->last_x = mx; eye->last_y = my; + eye->is_set = true; } } @@ -172,14 +174,17 @@ static void eyedropper_colorband_apply(bContext *C, wmOperator *op) /* Always filter, avoids noise in resulting color-band. */ bool filter_samples = true; BKE_colorband_init_from_table_rgba(eye->color_band, eye->color_buffer, eye->color_buffer_len, filter_samples); + eye->is_set = true; RNA_property_update(C, &eye->ptr, eye->prop); } static void eyedropper_colorband_cancel(bContext *C, wmOperator *op) { EyedropperColorband *eye = op->customdata; - *eye->color_band = eye->init_color_band; - RNA_property_update(C, &eye->ptr, eye->prop); + if (eye->is_set) { + *eye->color_band = eye->init_color_band; + RNA_property_update(C, &eye->ptr, eye->prop); + } eyedropper_colorband_exit(C, op); } diff --git a/source/blender/editors/interface/interface_eyedropper_depth.c b/source/blender/editors/interface/interface_eyedropper_depth.c index 4d0a95a6bbd..1634e7c6bd4 100644 --- a/source/blender/editors/interface/interface_eyedropper_depth.c +++ b/source/blender/editors/interface/interface_eyedropper_depth.c @@ -69,6 +69,7 @@ typedef struct DepthDropper { PropertyRNA *prop; bool is_undo; + bool is_set; float init_depth; /* for resetting on cancel */ bool accum_start; /* has mouse been presed */ @@ -219,6 +220,7 @@ static void depthdropper_depth_sample_pt(bContext *C, DepthDropper *ddr, int mx, static void depthdropper_depth_set(bContext *C, DepthDropper *ddr, const float depth) { RNA_property_float_set(&ddr->ptr, ddr->prop, depth); + ddr->is_set = true; RNA_property_update(C, &ddr->ptr, ddr->prop); } @@ -255,7 +257,9 @@ static void depthdropper_depth_sample_accum(bContext *C, DepthDropper *ddr, int static void depthdropper_cancel(bContext *C, wmOperator *op) { DepthDropper *ddr = op->customdata; - depthdropper_depth_set(C, ddr, ddr->init_depth); + if (ddr->is_set) { + depthdropper_depth_set(C, ddr, ddr->init_depth); + } depthdropper_exit(C, op); } |