[Bf-blender-cvs] [7f03c9d] master: Fix: Keyframe click-selection threshold in Dopesheet was still hardcoded to 7px

Joshua Leung noreply at git.blender.org
Thu Jul 7 15:53:49 CEST 2016


Commit: 7f03c9de7e9dbb0fc6be8f360e51aba9d47f2853
Author: Joshua Leung
Date:   Fri Jul 8 00:32:05 2016 +1200
Branches: master
https://developer.blender.org/rB7f03c9de7e9dbb0fc6be8f360e51aba9d47f2853

Fix: Keyframe click-selection threshold in Dopesheet was still hardcoded to 7px

===================================================================

M	source/blender/editors/space_action/action_select.c

===================================================================

diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c
index 5a4b2fe..553be0a 100644
--- a/source/blender/editors/space_action/action_select.c
+++ b/source/blender/editors/space_action/action_select.c
@@ -1351,6 +1351,7 @@ static void mouse_action_keys(bAnimContext *ac, const int mval[2], short select_
 	bool found = false;
 	float frame = 0.0f; /* frame of keyframe under mouse - NLA corrections not applied/included */
 	float selx = 0.0f;  /* frame of keyframe under mouse */
+	float key_hsize;
 	float x, y;
 	rctf rectf;
 	
@@ -1362,9 +1363,14 @@ static void mouse_action_keys(bAnimContext *ac, const int mval[2], short select_
 	UI_view2d_region_to_view(v2d, mval[0], mval[1], &x, &y);
 	UI_view2d_listview_view_to_cell(v2d, 0, ACHANNEL_STEP(ac), 0, (float)ACHANNEL_HEIGHT_HALF(ac), x, y, NULL, &channel_index);
 	
-	/* x-range to check is +/- 7 (in screen/region-space) on either side of mouse click (size of keyframe icon) */
-	UI_view2d_region_to_view(v2d, mval[0] - 7, mval[1], &rectf.xmin, &rectf.ymin);
-	UI_view2d_region_to_view(v2d, mval[0] + 7, mval[1], &rectf.xmax, &rectf.ymax);
+	/* x-range to check is +/- 7px for standard keyframe under standard dpi/y-scale (in screen/region-space),
+	 * on either side of mouse click (size of keyframe icon)
+	 */
+	key_hsize = ACHANNEL_HEIGHT(ac) * 0.8f;    /* standard channel height (to allow for some slop) */
+	key_hsize = roundf(key_hsize / 2.0f);      /* half-size (for either side), but rounded up to nearest int (for easier targetting) */
+	
+	UI_view2d_region_to_view(v2d, mval[0] - (int)key_hsize, mval[1], &rectf.xmin, &rectf.ymin);
+	UI_view2d_region_to_view(v2d, mval[0] + (int)key_hsize, mval[1], &rectf.xmax, &rectf.ymax);
 	
 	/* filter data */
 	filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_LIST_CHANNELS);




More information about the Bf-blender-cvs mailing list