Revision: 26255
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26255
Author:   theeth
Date:     2010-01-25 18:48:02 +0100 (Mon, 25 Jan 2010)

Log Message:
-----------
Use modal keymap events for transform numinput increment and decrement

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform.h
    trunk/blender/source/blender/editors/transform/transform_numinput.c

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c  2010-01-25 
17:24:04 UTC (rev 26254)
+++ trunk/blender/source/blender/editors/transform/transform.c  2010-01-25 
17:48:02 UTC (rev 26255)
@@ -470,6 +470,8 @@
 #define TFM_MODAL_CONS_OFF             15
 #define TFM_MODAL_ADD_SNAP             16
 #define TFM_MODAL_REMOVE_SNAP  17
+/*     18 and 19 used by numinput, defined in transform.h
+ * */
 
 /* called in transform_ops.c, on each regeneration of keymaps */
 wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf)
@@ -492,6 +494,8 @@
        {TFM_MODAL_CONS_OFF, "CONS_OFF", 0, "Remove Constraints", ""},
        {TFM_MODAL_ADD_SNAP, "ADD_SNAP", 0, "Add Snap Point", ""},
        {TFM_MODAL_REMOVE_SNAP, "REMOVE_SNAP", 0, "Remove Last Snap Point", ""},
+       {TFM_MODAL_INCREMENT_UP, "INCREMENT_UP", 0, "Numinput Increment Up", 
""},
+       {TFM_MODAL_INCREMENT_DOWN, "INCREMENT_DOWN", 0, "Numinput Increment 
Down", ""},
        {0, NULL, 0, NULL, NULL}};
        
        wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map");
@@ -519,6 +523,9 @@
        WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, 
TFM_MODAL_ADD_SNAP);
        WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, 
TFM_MODAL_REMOVE_SNAP);
 
+       WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_PRESS, 0, 0, 
TFM_MODAL_INCREMENT_UP);
+       WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_PRESS, 0, 0, 
TFM_MODAL_INCREMENT_DOWN);
+
        return keymap;
 }
 
@@ -702,6 +709,9 @@
                                handled = 0;
                                break;
                }
+
+               // Modal numinput events
+               t->redraw |= handleNumInput(&(t->num), event, t->snap[1]);
        }
        /* else do non-mapped events */
        else if (event->val==KM_PRESS) {

Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h  2010-01-25 
17:24:04 UTC (rev 26254)
+++ trunk/blender/source/blender/editors/transform/transform.h  2010-01-25 
17:48:02 UTC (rev 26255)
@@ -679,6 +679,9 @@
 void applyNumInput(NumInput *n, float *vec);
 char handleNumInput(NumInput *n, struct wmEvent *event, float increment);
 
+#define TFM_MODAL_INCREMENT_UP   18
+#define TFM_MODAL_INCREMENT_DOWN 19
+
 /*********************** NDofInput ********************************/
 
 void initNDofInput(NDofInput *n);

Modified: trunk/blender/source/blender/editors/transform/transform_numinput.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_numinput.c 
2010-01-25 17:24:04 UTC (rev 26254)
+++ trunk/blender/source/blender/editors/transform/transform_numinput.c 
2010-01-25 17:48:02 UTC (rev 26255)
@@ -164,127 +164,138 @@
        float Val = 0;
        short idx = n->idx, idx_max = n->idx_max;
 
-       switch (event->type) {
-    case DOWNARROWKEY: /* Increments down*/
-               if (!n->ctrl[idx])
-                       n->ctrl[idx] = 1;
+       if (event->type == EVT_MODAL_MAP) {
+               switch (event->val) {
+               case TFM_MODAL_INCREMENT_UP:
+                       if (!n->ctrl[idx])
+                               n->ctrl[idx] = 1;
 
-        n->val[idx] -= increment;
-        break;
-    case UPARROWKEY: /* Increments up*/
-               if (!n->ctrl[idx])
-                       n->ctrl[idx] = 1;
-
-               n->val[idx] += increment;
-        break;
-       case BACKSPACEKEY:
-               if (n->ctrl[idx] == 0) {
-                       n->val[0]               = 
-                               n->val[1]       = 
-                               n->val[2]       = 0.0f;
-                       n->ctrl[0]              = 
-                               n->ctrl[1]      = 
-                               n->ctrl[2]      = 0;
-                       n->inv[0]               = 
-                               n->inv[1]       = 
-                               n->inv[2]       = 0;
-               }
-               else {
-                       n->val[idx] = 0.0f;
-                       n->ctrl[idx] = 0;
-                       n->inv[idx] = 0;
-               }
-               break;
-       case PERIODKEY:
-       case PADPERIOD:
-               if (n->flag & NUM_NO_FRACTION)
+               n->val[idx] += increment;
                        break;
+               case TFM_MODAL_INCREMENT_DOWN:
+                       if (!n->ctrl[idx])
+                               n->ctrl[idx] = 1;
 
-               switch (n->ctrl[idx])
-               {
-               case 0:
-               case 1:
-                       n->ctrl[idx] = 10;
+               n->val[idx] -= increment;
                        break;
-               case -1:
-                       n->ctrl[idx] = -10;
                }
-               break;
-       case PADMINUS:
-               if(event->alt)
+       } else {
+               switch (event->type) {
+               case UPARROWKEY: /* Increments up*/
+                       if (!n->ctrl[idx])
+                               n->ctrl[idx] = 1;
+
+                       n->val[idx] += increment;
                        break;
-       case MINUSKEY:
-               if (n->flag & NUM_NO_NEGATIVE)
+               case BACKSPACEKEY:
+                       if (n->ctrl[idx] == 0) {
+                               n->val[0]               =
+                                       n->val[1]       =
+                                       n->val[2]       = 0.0f;
+                               n->ctrl[0]              =
+                                       n->ctrl[1]      =
+                                       n->ctrl[2]      = 0;
+                               n->inv[0]               =
+                                       n->inv[1]       =
+                                       n->inv[2]       = 0;
+                       }
+                       else {
+                               n->val[idx] = 0.0f;
+                               n->ctrl[idx] = 0;
+                               n->inv[idx] = 0;
+                       }
                        break;
+               case PERIODKEY:
+               case PADPERIOD:
+                       if (n->flag & NUM_NO_FRACTION)
+                               break;
 
-               if (n->ctrl[idx]) {
-                       n->ctrl[idx] *= -1;
-                       n->val[idx] *= -1;
-               }
-               else
-                       n->ctrl[idx] = -1;
-               break;
-       case PADSLASHKEY:
-       case SLASHKEY:
-               n->inv[idx] = !n->inv[idx];
-               break;
-       case TABKEY:
-               idx++;
-               if (idx > idx_max)
-                       idx = 0;
-               n->idx = idx;
-               break;
-       case PAD9:
-       case NINEKEY:
-               Val += 1.0f;
-       case PAD8:
-       case EIGHTKEY:
-               Val += 1.0f;
-       case PAD7:
-       case SEVENKEY:
-               Val += 1.0f;
-       case PAD6:
-       case SIXKEY:
-               Val += 1.0f;
-       case PAD5:
-       case FIVEKEY:
-               Val += 1.0f;
-       case PAD4:
-       case FOURKEY:
-               Val += 1.0f;
-       case PAD3:
-       case THREEKEY:
-               Val += 1.0f;
-       case PAD2:
-       case TWOKEY:
-               Val += 1.0f;
-       case PAD1:
-       case ONEKEY:
-               Val += 1.0f;
-       case PAD0:
-       case ZEROKEY:
-               if (!n->ctrl[idx])
-                       n->ctrl[idx] = 1;
+                       switch (n->ctrl[idx])
+                       {
+                       case 0:
+                       case 1:
+                               n->ctrl[idx] = 10;
+                               break;
+                       case -1:
+                               n->ctrl[idx] = -10;
+                       }
+                       break;
+               case PADMINUS:
+                       if(event->alt)
+                               break;
+               case MINUSKEY:
+                       if (n->flag & NUM_NO_NEGATIVE)
+                               break;
 
-               if (fabs(n->val[idx]) > 9999999.0f);
-               else if (n->ctrl[idx] == 1) {
-                       n->val[idx] *= 10;
-                       n->val[idx] += Val;
-               }
-               else if (n->ctrl[idx] == -1) {
-                       n->val[idx] *= 10;
-                       n->val[idx] -= Val;
-               }
-               else {
-                       /* float resolution breaks when over six digits after 
comma */
-                       if( ABS(n->ctrl[idx]) < 10000000) {
-                               n->val[idx] += Val / (float)n->ctrl[idx];
-                               n->ctrl[idx] *= 10;
+                       if (n->ctrl[idx]) {
+                               n->ctrl[idx] *= -1;
+                               n->val[idx] *= -1;
                        }
+                       else
+                               n->ctrl[idx] = -1;
+                       break;
+               case PADSLASHKEY:
+               case SLASHKEY:
+                       n->inv[idx] = !n->inv[idx];
+                       break;
+               case TABKEY:
+                       idx++;
+                       if (idx > idx_max)
+                               idx = 0;
+                       n->idx = idx;
+                       break;
+               case PAD9:
+               case NINEKEY:
+                       Val += 1.0f;
+               case PAD8:
+               case EIGHTKEY:
+                       Val += 1.0f;
+               case PAD7:
+               case SEVENKEY:
+                       Val += 1.0f;
+               case PAD6:
+               case SIXKEY:
+                       Val += 1.0f;
+               case PAD5:
+               case FIVEKEY:
+                       Val += 1.0f;
+               case PAD4:
+               case FOURKEY:
+                       Val += 1.0f;
+               case PAD3:
+               case THREEKEY:
+                       Val += 1.0f;
+               case PAD2:
+               case TWOKEY:
+                       Val += 1.0f;
+               case PAD1:
+               case ONEKEY:
+                       Val += 1.0f;
+               case PAD0:
+               case ZEROKEY:
+                       if (!n->ctrl[idx])
+                               n->ctrl[idx] = 1;
+
+                       if (fabs(n->val[idx]) > 9999999.0f);
+                       else if (n->ctrl[idx] == 1) {
+                               n->val[idx] *= 10;
+                               n->val[idx] += Val;
+                       }
+                       else if (n->ctrl[idx] == -1) {
+                               n->val[idx] *= 10;
+                               n->val[idx] -= Val;
+                       }
+                       else {
+                               /* float resolution breaks when over six digits 
after comma */
+                               if( ABS(n->ctrl[idx]) < 10000000) {
+                                       n->val[idx] += Val / 
(float)n->ctrl[idx];
+                                       n->ctrl[idx] *= 10;
+                               }
+                       }
+                       break;
+               default:
+                       return 0;
                }
-               break;
-       default:
-               return 0;
        }
        
        /* REDRAW SINCE NUMBERS HAVE CHANGED */


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

Reply via email to