Revision: 18717 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18717 Author: ton Date: 2009-01-28 16:39:39 +0100 (Wed, 28 Jan 2009)
Log Message: ----------- 2.5 Made 'select-tweak-grab' work in 3d window, fcurve and nodes. For nodes it works with both left/right, the others follow user preset for select. Tweak is a WM event, which also follows user preset for tablet-style tweaks (release = apply). You enable tweak events with an operator WM_OT_tweak_gesture. Keymap entries can assign to left/middle/right button or to action/select button tweaks. Modified Paths: -------------- branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_ops.c branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c branches/blender2.5/blender/source/blender/editors/space_node/node_select.c branches/blender2.5/blender/source/blender/editors/space_node/node_state.c branches/blender2.5/blender/source/blender/editors/transform/transform.c branches/blender2.5/blender/source/blender/editors/transform/transform.h branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c Modified: branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -867,7 +867,7 @@ WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0); - /* generates event, in end to make select work */ + /* generates event, needs to be after select to work */ WM_keymap_verify_item(keymap, "WM_OT_tweak_gesture", RIGHTMOUSE, KM_PRESS, 0, 0); } Modified: branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_ops.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_ops.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_ops.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -186,7 +186,9 @@ //WM_keymap_add_item(keymap, "GRAPHEDIT_OT_set_previewrange", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); //WM_keymap_add_item(keymap, "GRAPHEDIT_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); - + /* generates event, needs to be after select to work */ + WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", SELECTMOUSE, KM_PRESS, 0, 0); + /* transform system */ transform_keymap_for_space(wm, keymap, SPACE_IPO); } Modified: branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -870,7 +870,8 @@ /* set notifier tha things have changed */ ANIM_animdata_send_notifiers(C, &ac, ANIM_CHANGED_BOTH); - return OPERATOR_FINISHED; + /* for tweak grab to work */ + return OPERATOR_PASS_THROUGH; } void GRAPHEDIT_OT_keyframes_clickselect (wmOperatorType *ot) Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -73,5 +73,9 @@ WM_keymap_add_item(keymap, "NODE_OT_border_select", BKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_delete_selection", XKEY, KM_PRESS, 0, 0); + /* generates event, needs to be after select to work */ + WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", ACTIONMOUSE, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "WM_OT_tweak_gesture", SELECTMOUSE, KM_PRESS, 0, 0); + transform_keymap_for_space(wm, keymap, SPACE_NODE); } Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_select.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_node/node_select.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/space_node/node_select.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -125,10 +125,9 @@ } WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); /* Do we need to pass the scene? */ - - //WM_event_add_modal_handler(C, &window->handlers, op); - return /*OPERATOR_RUNNING_MODAL;*/ OPERATOR_FINISHED; + /* allow tweak event to work too */ + return OPERATOR_PASS_THROUGH; } static int node_select_modal(bContext *C, wmOperator *op, wmEvent *event) Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_state.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_node/node_state.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/space_node/node_state.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -126,7 +126,7 @@ return 0; } -static void node_toggle_visibility(SpaceNode *snode, ARegion *ar, short *mval) +static int node_toggle_visibility(SpaceNode *snode, ARegion *ar, short *mval) { bNode *node; float mx, my; @@ -140,16 +140,17 @@ if(node->flag & NODE_HIDDEN) { if(do_header_hidden_node(snode, node, mx, my)) { ED_region_tag_redraw(ar); - break; + return 1; } } else { if(do_header_node(snode, node, mx, my)) { ED_region_tag_redraw(ar); - break; + return 1; } } } + return 0; } static int node_toggle_visibility_exec(bContext *C, wmOperator *op) @@ -160,9 +161,10 @@ mval[0] = RNA_int_get(op->ptr, "mouse_x"); mval[1] = RNA_int_get(op->ptr, "mouse_y"); - node_toggle_visibility(snode, ar, mval); - - return OPERATOR_FINISHED; + if(node_toggle_visibility(snode, ar, mval)) + return OPERATOR_FINISHED; + else + return OPERATOR_PASS_THROUGH; } static int node_toggle_visibility_invoke(bContext *C, wmOperator *op, wmEvent *event) Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/transform/transform.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/transform/transform.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -882,7 +882,8 @@ break; case LEFTMOUSE: case RIGHTMOUSE: - if (t->options & CTX_TWEAK) + if(WM_modal_tweak_exit(event, t->event_type)) +// if (t->options & CTX_TWEAK) t->state = TRANS_CONFIRM; break; } Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/transform/transform.h 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/transform/transform.h 2009-01-28 15:39:39 UTC (rev 18717) @@ -218,6 +218,7 @@ float center[3]; /* center of transformation */ int center2d[2]; /* center in screen coordinates */ short imval[2]; /* initial mouse position */ + short event_type; /* event->type used to invoke transform */ short idx_max; /* maximum index on the input vector */ float snap[3]; /* Snapping Gears */ char frame_side; /* Mouse side of the cfra, 'L', 'R' or 'B' */ Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -684,6 +684,8 @@ { t->imval[0] = event->x - t->ar->winrct.xmin; t->imval[1] = event->y - t->ar->winrct.ymin; + + t->event_type = event->type; } else { Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -242,7 +242,10 @@ case SPACE_VIEW3D: km = WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); - + + km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); + RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); + km = WM_keymap_add_item(keymap, "TFM_OT_transform", RKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_ROTATION); @@ -265,6 +268,9 @@ km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE); + km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); + RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE); + km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND); @@ -278,6 +284,9 @@ km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); + km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); + RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); + // XXX the 'mode' identifier here is not quite right km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND); @@ -292,6 +301,11 @@ km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); + km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_A, KM_ANY, 0, 0); + RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); + km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); + RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); + km = WM_keymap_add_item(keymap, "TFM_OT_transform", RKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_ROTATION); @@ -301,7 +315,10 @@ case SPACE_SEQ: km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); - + + km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); + RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); + km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND); break; Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c =================================================================== --- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c 2009-01-28 13:16:43 UTC (rev 18716) +++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c 2009-01-28 15:39:39 UTC (rev 18717) @@ -970,8 +970,8 @@ @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs