Revision: 44404
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44404
Author:   nazgul
Date:     2012-02-24 13:44:45 +0000 (Fri, 24 Feb 2012)
Log Message:
-----------
Code clean-up and make zoom in/out operator store mouse coordinate
so exec() callback will zoom in/out properly.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_clip/clip_ops.c

Modified: trunk/blender/source/blender/editors/space_clip/clip_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_ops.c  2012-02-24 
13:31:18 UTC (rev 44403)
+++ trunk/blender/source/blender/editors/space_clip/clip_ops.c  2012-02-24 
13:44:45 UTC (rev 44404)
@@ -119,16 +119,6 @@
        ED_region_tag_redraw(CTX_wm_region(C));
 }
 
-static void view_zoom_in_do_exec(bContext *C, wmEvent *event)
-{
-       sclip_zoom_set_factor_exec(C, event, 1.25f);
-}
-
-static void view_zoom_out_do_exec(bContext *C, wmEvent *event)
-{
-       sclip_zoom_set_factor_exec(C, event, 0.8f);
-}
-
 /******************** open clip operator ********************/
 
 static void clip_filesel(bContext *C, wmOperator *op, const char *path)
@@ -544,18 +534,29 @@
 
 /********************** view zoom in/out operator *********************/
 
-static int view_zoom_in_exec(bContext *C, wmOperator *UNUSED(op))
+static int view_zoom_in_exec(bContext *C, wmOperator *op)
 {
-       view_zoom_in_do_exec(C, NULL);
+       SpaceClip *sc= CTX_wm_space_clip(C);
+       ARegion *ar= CTX_wm_region(C);
+       float location[2];
 
+       RNA_float_get_array(op->ptr, "location", location);
+
+       sclip_zoom_set_factor(sc, ar, 1.25f, location);
+
+       ED_region_tag_redraw(CTX_wm_region(C));
+
        return OPERATOR_FINISHED;
 }
 
-static int view_zoom_in_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent 
*event)
+static int view_zoom_in_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
-       view_zoom_in_do_exec(C, event);
+       float location[2];
 
-       return OPERATOR_FINISHED;
+       ED_clip_mouse_pos(C, event, location);
+       RNA_float_set_array(op->ptr, "location", location);
+
+       return view_zoom_in_exec(C, op);
 }
 
 void CLIP_OT_view_zoom_in(wmOperatorType *ot)
@@ -568,20 +569,34 @@
        ot->exec= view_zoom_in_exec;
        ot->invoke= view_zoom_in_invoke;
        ot->poll= ED_space_clip_poll;
+
+       /* properties */
+       RNA_def_float_vector(ot->srna, "location", 2, NULL, -FLT_MAX, FLT_MAX, 
"Location", "Cursor location in screen coordinates", -10.0f, 10.0f);
 }
 
-static int view_zoom_out_exec(bContext *C, wmOperator *UNUSED(op))
+static int view_zoom_out_exec(bContext *C, wmOperator *op)
 {
-       view_zoom_out_do_exec(C, NULL);
+       SpaceClip *sc= CTX_wm_space_clip(C);
+       ARegion *ar= CTX_wm_region(C);
+       float location[2];
 
+       RNA_float_get_array(op->ptr, "location", location);
+
+       sclip_zoom_set_factor(sc, ar, 0.8f, location);
+
+       ED_region_tag_redraw(CTX_wm_region(C));
+
        return OPERATOR_FINISHED;
 }
 
-static int view_zoom_out_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent 
*event)
+static int view_zoom_out_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
-       view_zoom_out_do_exec(C, event);
+       float location[2];
 
-       return OPERATOR_FINISHED;
+       ED_clip_mouse_pos(C, event, location);
+       RNA_float_set_array(op->ptr, "location", location);
+
+       return view_zoom_out_exec(C, op);
 }
 
 void CLIP_OT_view_zoom_out(wmOperatorType *ot)
@@ -594,6 +609,9 @@
        ot->exec= view_zoom_out_exec;
        ot->invoke= view_zoom_out_invoke;
        ot->poll= ED_space_clip_poll;
+
+       /* properties */
+       RNA_def_float_vector(ot->srna, "location", 2, NULL, -FLT_MAX, FLT_MAX, 
"Location", "Cursor location in normalised (0.0-1.0) coordinates", -10.0f, 
10.0f);
 }
 
 /********************** view zoom ratio operator *********************/

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to