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

Reply via email to