[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48864] trunk/blender/source/blender/ editors/transform/transform.c: Fix #31584: Fractional step in value input for Skin Modifier (Event/input problem)

Sergey Sharybin sergey.vfx at gmail.com
Thu Jul 12 16:41:53 CEST 2012


Revision: 48864
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48864
Author:   nazgul
Date:     2012-07-12 14:41:52 +0000 (Thu, 12 Jul 2012)
Log Message:
-----------
Fix #31584: Fractional step in value input for Skin Modifier (Event/input problem)

Issue was caused by the code which checked whether snapping should be enabled
on transform init taking into account keymap and special keys state. It was
used for Ctrl-Click on manipulator only.

Check for Ctrl state gave wring result with skin modifier. It was solved
by additional check for which mode transformation is initializing for --
currently manipulator is available for translation/roation/resize only
which doesn't give any keymap issues.

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

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2012-07-12 14:38:36 UTC (rev 48863)
+++ trunk/blender/source/blender/editors/transform/transform.c	2012-07-12 14:41:52 UTC (rev 48864)
@@ -1676,19 +1676,25 @@
 
 	/* Stupid code to have Ctrl-Click on manipulator work ok */
 	if (event) {
-		wmKeyMap *keymap = WM_keymap_active(CTX_wm_manager(C), op->type->modalkeymap);
-		wmKeyMapItem *kmi;
+		/* do this only for translation/rotation/resize due to only this
+		 * moded are available from manipulator and doing such check could
+		 * lead to keymap conflicts for other modes (see #31584)
+		 */
+		if (ELEM3(mode, TFM_TRANSLATION, TFM_ROTATION, TFM_RESIZE)) {
+			wmKeyMap *keymap = WM_keymap_active(CTX_wm_manager(C), op->type->modalkeymap);
+			wmKeyMapItem *kmi;
 
-		for (kmi = keymap->items.first; kmi; kmi = kmi->next) {
-			if (kmi->propvalue == TFM_MODAL_SNAP_INV_ON && kmi->val == KM_PRESS) {
-				if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) &&   event->ctrl)  ||
-				    (ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) ||
-				    (ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) &&     event->alt)   ||
-				    ((kmi->type == OSKEY) &&                         event->oskey) )
-				{
-					t->modifiers |= MOD_SNAP_INVERT;
+			for (kmi = keymap->items.first; kmi; kmi = kmi->next) {
+				if (kmi->propvalue == TFM_MODAL_SNAP_INV_ON && kmi->val == KM_PRESS) {
+					if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) &&   event->ctrl)  ||
+					    (ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) ||
+					    (ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) &&     event->alt)   ||
+					    ((kmi->type == OSKEY) &&                         event->oskey) )
+					{
+						t->modifiers |= MOD_SNAP_INVERT;
+					}
+					break;
 				}
-				break;
 			}
 		}
 




More information about the Bf-blender-cvs mailing list