[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60774] trunk/blender/source/blender/ editors/sculpt_paint/paint_image.c: Final fix for #36905.
Antony Riakiotakis
kalast at gmail.com
Tue Oct 15 15:45:27 CEST 2013
Revision: 60774
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60774
Author: psy-fi
Date: 2013-10-15 13:45:27 +0000 (Tue, 15 Oct 2013)
Log Message:
-----------
Final fix for #36905. Enforce redraw of window once before sampling.
Thanks to Brecht for the solution!
Modified Paths:
--------------
trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_image.c 2013-10-15 12:37:40 UTC (rev 60773)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_image.c 2013-10-15 13:45:27 UTC (rev 60774)
@@ -936,11 +936,23 @@
Paint *paint = BKE_paint_get_active_from_context(C);
Brush *brush = BKE_paint_brush(paint);
ARegion *ar = CTX_wm_region(C);
+ wmWindow *win = CTX_wm_window(C);
+ bool show_cursor = ((paint->flags & PAINT_SHOW_BRUSH) != 0);
int location[2];
+ paint->flags &= ~PAINT_SHOW_BRUSH;
+
+ /* force redraw without cursor */
+ WM_paint_cursor_tag_redraw(win, ar);
+ WM_redraw_windows(C);
+
RNA_int_get_array(op->ptr, "location", location);
paint_sample_color(C, ar, location[0], location[1]);
+ if(show_cursor) {
+ paint->flags |= PAINT_SHOW_BRUSH;
+ }
+
WM_event_add_notifier(C, NC_BRUSH | NA_EDITED, brush);
return OPERATOR_FINISHED;
@@ -950,14 +962,20 @@
{
Paint *paint = BKE_paint_get_active_from_context(C);
SampleColorData *data = MEM_mallocN(sizeof(SampleColorData), "sample color custom data");
+ ARegion *ar = CTX_wm_region(C);
+ wmWindow *win = CTX_wm_window(C);
data->event_type = event->type;
data->show_cursor = ((paint->flags & PAINT_SHOW_BRUSH) != 0);
op->customdata = data;
paint->flags &= ~PAINT_SHOW_BRUSH;
+ /* force redraw without cursor */
+ WM_paint_cursor_tag_redraw(win, ar);
+ WM_redraw_windows(C);
+
RNA_int_set_array(op->ptr, "location", event->mval);
- sample_color_exec(C, op);
+ paint_sample_color(C, ar, event->mval[0], event->mval[1]);
WM_event_add_modal_handler(C, op);
@@ -967,10 +985,10 @@
static int sample_color_modal(bContext *C, wmOperator *op, const wmEvent *event)
{
SampleColorData *data = op->customdata;
+ Paint *paint = BKE_paint_get_active_from_context(C);
+ Brush *brush = BKE_paint_brush(paint);
if ((event->type == data->event_type) && (event->val == KM_RELEASE)) {
- Paint *paint = BKE_paint_get_active_from_context(C);
-
if(data->show_cursor) {
paint->flags |= PAINT_SHOW_BRUSH;
}
@@ -981,9 +999,13 @@
switch (event->type) {
case MOUSEMOVE:
+ {
+ ARegion *ar = CTX_wm_region(C);
RNA_int_set_array(op->ptr, "location", event->mval);
- sample_color_exec(C, op);
+ paint_sample_color(C, ar, event->mval[0], event->mval[1]);
+ WM_event_add_notifier(C, NC_BRUSH | NA_EDITED, brush);
break;
+ }
}
return OPERATOR_RUNNING_MODAL;
More information about the Bf-blender-cvs
mailing list