[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31974] trunk/blender/source/blender/ editors/sculpt_paint/paint_image.c: Fix #23652: texture paint RMB would translate the object after sampling
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu Sep 16 23:03:08 CEST 2010
Revision: 31974
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31974
Author: blendix
Date: 2010-09-16 23:03:07 +0200 (Thu, 16 Sep 2010)
Log Message:
-----------
Fix #23652: texture paint RMB would translate the object after sampling
color, made sample a modal operator now to solve this. It's an indirect
solution, but couldn't think of anything better, and it's useful to have
anyway.
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 2010-09-16 20:33:46 UTC (rev 31973)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_image.c 2010-09-16 21:03:07 UTC (rev 31974)
@@ -5135,13 +5135,42 @@
ARegion *ar= CTX_wm_region(C);
int location[2];
- location[0]= event->x - ar->winrct.xmin;
- location[1]= event->y - ar->winrct.ymin;
- RNA_int_set_array(op->ptr, "location", location);
+ if(ar) {
+ location[0]= event->x - ar->winrct.xmin;
+ location[1]= event->y - ar->winrct.ymin;
+ RNA_int_set_array(op->ptr, "location", location);
- return sample_color_exec(C, op);
+ sample_color_exec(C, op);
+ }
+
+ WM_event_add_modal_handler(C, op);
+
+ return OPERATOR_RUNNING_MODAL;
}
+static int sample_color_modal(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ARegion *ar= CTX_wm_region(C);
+ int location[2];
+
+ switch(event->type) {
+ case LEFTMOUSE:
+ case RIGHTMOUSE: // XXX hardcoded
+ return OPERATOR_FINISHED;
+ case MOUSEMOVE:
+ if(ar) {
+ location[0]= event->x - ar->winrct.xmin;
+ location[1]= event->y - ar->winrct.ymin;
+ RNA_int_set_array(op->ptr, "location", location);
+
+ sample_color_exec(C, op);
+ }
+ break;
+ }
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
void PAINT_OT_sample_color(wmOperatorType *ot)
{
/* identifiers */
@@ -5151,6 +5180,7 @@
/* api callbacks */
ot->exec= sample_color_exec;
ot->invoke= sample_color_invoke;
+ ot->modal= sample_color_modal;
ot->poll= image_paint_poll;
/* flags */
More information about the Bf-blender-cvs
mailing list