[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27966] trunk/blender/source/blender/ editors: [#21840] When clicking to move a Node it sticks to the mouse
Martin Poirier
theeth at yahoo.com
Fri Apr 2 21:40:51 CEST 2010
Revision: 27966
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27966
Author: theeth
Date: 2010-04-02 21:40:51 +0200 (Fri, 02 Apr 2010)
Log Message:
-----------
[#21840] When clicking to move a Node it sticks to the mouse
Add hidden property to be able to force confirm on release (drag immediately is a silly name) on or off.
Streamline method for adding common properties to transform operators.
Modified Paths:
--------------
trunk/blender/source/blender/editors/include/ED_transform.h
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
trunk/blender/source/blender/editors/space_node/node_ops.c
trunk/blender/source/blender/editors/transform/transform.c
trunk/blender/source/blender/editors/transform/transform.h
trunk/blender/source/blender/editors/transform/transform_generics.c
trunk/blender/source/blender/editors/transform/transform_ops.c
Modified: trunk/blender/source/blender/editors/include/ED_transform.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_transform.h 2010-04-02 19:38:20 UTC (rev 27965)
+++ trunk/blender/source/blender/editors/include/ED_transform.h 2010-04-02 19:40:51 UTC (rev 27966)
@@ -135,10 +135,16 @@
/* to be able to add operator properties to other operators */
-void Properties_Proportional(struct wmOperatorType *ot);
-void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align);
-void Properties_Constraints(struct wmOperatorType *ot);
+#define P_MIRROR (1 << 0)
+#define P_PROPORTIONAL (1 << 1)
+#define P_AXIS (1 << 2)
+#define P_SNAP (1 << 3)
+#define P_GEO_SNAP (P_SNAP|(1 << 4))
+#define P_ALIGN_SNAP (P_GEO_SNAP|(1 << 5))
+#define P_CONSTRAINT (1 << 6)
+void Transform_Properties(struct wmOperatorType *ot, int flags);
+
/* view3d manipulators */
int BIF_do_manipulator(struct bContext *C, struct wmEvent *event, struct wmOperator *op);
Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2010-04-02 19:38:20 UTC (rev 27965)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2010-04-02 19:40:51 UTC (rev 27966)
@@ -5048,8 +5048,8 @@
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* to give to transform */
- Properties_Proportional(ot);
- RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+ /* XXX Transform this in a macro */
+ Transform_Properties(ot, P_CONSTRAINT|P_MIRROR);
}
Modified: trunk/blender/source/blender/editors/space_node/node_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_ops.c 2010-04-02 19:38:20 UTC (rev 27965)
+++ trunk/blender/source/blender/editors/space_node/node_ops.c 2010-04-02 19:40:51 UTC (rev 27966)
@@ -74,12 +74,10 @@
void ED_operatormacros_node(void)
{
wmOperatorType *ot;
- wmOperatorTypeMacro *otmacro;
ot= WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
- otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
- RNA_enum_set(otmacro->ptr, "proportional", 0);
+ WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
}
void node_keymap(struct wmKeyConfig *keyconf)
Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c 2010-04-02 19:38:20 UTC (rev 27965)
+++ trunk/blender/source/blender/editors/transform/transform.c 2010-04-02 19:40:51 UTC (rev 27966)
@@ -1032,10 +1032,13 @@
}
/* confirm transform if launch key is released after mouse move */
- /* XXX Keyrepeat bug in Xorg fucks this up, will test when fixed */
- if (event->type == t->launch_event && (t->launch_event == LEFTMOUSE || t->launch_event == RIGHTMOUSE) && t->state != TRANS_STARTING)
+ if (t->flag & T_RELEASE_CONFIRM || t->state != TRANS_STARTING)
{
- t->state = TRANS_CONFIRM;
+ /* XXX Keyrepeat bug in Xorg fucks this up, will test when fixed */
+ if (event->type == t->launch_event && (t->launch_event == LEFTMOUSE || t->launch_event == RIGHTMOUSE))
+ {
+ t->state = TRANS_CONFIRM;
+ }
}
}
@@ -1443,17 +1446,14 @@
t->launch_event = event ? event->type : -1;
- if (U.flag & USER_DRAGIMMEDIATE)
+ if (t->launch_event == EVT_TWEAK_R)
{
- if (t->launch_event == EVT_TWEAK_R)
- {
- t->launch_event = RIGHTMOUSE;
- }
- else if (t->launch_event == EVT_TWEAK_L)
- {
- t->launch_event = LEFTMOUSE;
- }
+ t->launch_event = RIGHTMOUSE;
}
+ else if (t->launch_event == EVT_TWEAK_L)
+ {
+ t->launch_event = LEFTMOUSE;
+ }
// XXX Remove this when wm_operator_call_internal doesn't use window->eventstate (which can have type = 0)
// For manipulator only, so assume LEFTMOUSE
Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h 2010-04-02 19:38:20 UTC (rev 27965)
+++ trunk/blender/source/blender/editors/transform/transform.h 2010-04-02 19:40:51 UTC (rev 27966)
@@ -382,6 +382,8 @@
/* no retopo */
#define T_NO_PROJECT (1 << 22)
+#define T_RELEASE_CONFIRM (1 << 23)
+
/* TransInfo->modifiers */
#define MOD_CONSTRAINT_SELECT 0x01
#define MOD_PRECISION 0x02
Modified: trunk/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_generics.c 2010-04-02 19:38:20 UTC (rev 27965)
+++ trunk/blender/source/blender/editors/transform/transform_generics.c 2010-04-02 19:40:51 UTC (rev 27966)
@@ -991,6 +991,21 @@
t->around = V3D_CENTER;
}
+ if (op && RNA_property_is_set(op->ptr, "release_confirm"))
+ {
+ if (RNA_boolean_get(op->ptr, "release_confirm"))
+ {
+ t->flag |= T_RELEASE_CONFIRM;
+ }
+ }
+ else
+ {
+ if (U.flag & USER_DRAGIMMEDIATE)
+ {
+ t->flag |= T_RELEASE_CONFIRM;
+ }
+ }
+
if (op && RNA_struct_find_property(op->ptr, "mirror") && RNA_property_is_set(op->ptr, "mirror"))
{
if (RNA_boolean_get(op->ptr, "mirror"))
Modified: trunk/blender/source/blender/editors/transform/transform_ops.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_ops.c 2010-04-02 19:38:20 UTC (rev 27965)
+++ trunk/blender/source/blender/editors/transform/transform_ops.c 2010-04-02 19:40:51 UTC (rev 27966)
@@ -381,45 +381,65 @@
}
}
-void Properties_Proportional(struct wmOperatorType *ot)
-{
- RNA_def_enum(ot->srna, "proportional", proportional_editing_items, 0, "Proportional Editing", "");
- RNA_def_enum(ot->srna, "proportional_editing_falloff", proportional_falloff_items, 0, "Proportional Editing Falloff", "Falloff type for proportional editing mode.");
- RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100);
-}
+#define P_MIRROR (1 << 0)
+#define P_PROPORTIONAL (1 << 1)
+#define P_AXIS (1 << 2)
+#define P_SNAP (1 << 3)
+#define P_GEO_SNAP (P_SNAP|(1 << 4))
+#define P_ALIGN_SNAP (P_GEO_SNAP|(1 << 5))
+#define P_CONSTRAINT (1 << 6)
-void Properties_Axis(struct wmOperatorType *ot)
+
+void Transform_Properties(struct wmOperatorType *ot, int flags)
{
PropertyRNA *prop;
- prop= RNA_def_property(ot->srna, "axis", PROP_FLOAT, PROP_DIRECTION);
- RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Axis", "The axis around which the transformation occurs");
-}
+ // Add confirm method all the time
+ prop = RNA_def_boolean(ot->srna, "release_confirm", 0, "Confirm on Release", "Confirm operation when releasing button");
+ RNA_def_property_flag(prop, PROP_HIDDEN);
-void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align)
-{
- RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", "");
+ if (flags & P_AXIS)
+ {
+ prop= RNA_def_property(ot->srna, "axis", PROP_FLOAT, PROP_DIRECTION);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Axis", "The axis around which the transformation occurs");
+ }
- if (fullsnap) {
- RNA_def_enum(ot->srna, "snap_target", snap_target_items, 0, "Target", "");
- RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX);
+ if (flags & P_CONSTRAINT)
+ {
+ RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", "");
+ prop= RNA_def_property(ot->srna, "constraint_orientation", PROP_ENUM, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Orientation", "Transformation orientation");
+ RNA_def_enum_funcs(prop, rna_TransformOrientation_itemf);
+ }
- if (align) {
- RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", "");
- RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX);
- }
+ if (flags & P_MIRROR)
+ {
+ RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
}
-}
-void Properties_Constraints(struct wmOperatorType *ot)
-{
- PropertyRNA *prop;
- RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", "");
- prop= RNA_def_property(ot->srna, "constraint_orientation", PROP_ENUM, PROP_NONE);
- RNA_def_property_ui_text(prop, "Orientation", "Transformation orientation");
- RNA_def_enum_funcs(prop, rna_TransformOrientation_itemf);
+ if (flags & P_PROPORTIONAL)
+ {
+ RNA_def_enum(ot->srna, "proportional", proportional_editing_items, 0, "Proportional Editing", "");
+ RNA_def_enum(ot->srna, "proportional_editing_falloff", proportional_falloff_items, 0, "Proportional Editing Falloff", "Falloff type for proportional editing mode.");
+ RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100);
+ }
+
+ if (flags & P_SNAP)
+ {
+ RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", "");
+
+ if (flags & P_GEO_SNAP) {
+ RNA_def_enum(ot->srna, "snap_target", snap_target_items, 0, "Target", "");
+ RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX);
+
+ if (flags & P_ALIGN_SNAP) {
+ RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", "");
+ RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX);
+ }
+ }
+ }
}
void TRANSFORM_OT_translate(struct wmOperatorType *ot)
@@ -439,13 +459,7 @@
RNA_def_float_vector(ot->srna, "value", 3, NULL, -FLT_MAX, FLT_MAX, "Vector", "", -FLT_MAX, FLT_MAX);
- Properties_Proportional(ot);
-
- RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
-
- Properties_Constraints(ot);
-
- Properties_Snapping(ot, 1, 1);
+ Transform_Properties(ot, P_CONSTRAINT|P_PROPORTIONAL|P_MIRROR|P_ALIGN_SNAP);
}
void TRANSFORM_OT_resize(struct wmOperatorType *ot)
@@ -465,13 +479,7 @@
RNA_def_float_vector(ot->srna, "value", 3, VecOne, -FLT_MAX, FLT_MAX, "Vector", "", -FLT_MAX, FLT_MAX);
- Properties_Proportional(ot);
-
- RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
-
- Properties_Constraints(ot);
-
- Properties_Snapping(ot, 1, 0);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list