[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59795] trunk/blender/source/blender/ editors/screen/screen_ops.c: better fix for r59794, register a gesture when the mouse goes outside the actionzone.
Campbell Barton
ideasman42 at gmail.com
Wed Sep 4 07:25:30 CEST 2013
Revision: 59795
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59795
Author: campbellbarton
Date: 2013-09-04 05:25:29 +0000 (Wed, 04 Sep 2013)
Log Message:
-----------
better fix for r59794, register a gesture when the mouse goes outside the actionzone.
Revision Links:
--------------
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59794
Modified Paths:
--------------
trunk/blender/source/blender/editors/screen/screen_ops.c
Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c 2013-09-04 05:06:38 UTC (rev 59794)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c 2013-09-04 05:25:29 UTC (rev 59795)
@@ -700,9 +700,7 @@
switch (event->type) {
case MOUSEMOVE:
{
- /* for AZONE_AREA 'delta_min' uses (AZONESPOT + 1) dragging before a gesture is accepted.
- * because the distance must be larger then the hot-spot else an intended join can turn into a split */
- const int delta_min = (sad->az->type == AZONE_AREA) ? (AZONESPOT + 1) : 1;
+ bool is_gesture;
const int delta_x = (event->x - sad->x);
const int delta_y = (event->y - sad->y);
@@ -717,10 +715,20 @@
else
sad->gesture_dir = 'w';
+ if (sad->az->type == AZONE_AREA) {
+ /* once we drag outside the actionzone, register a gesture
+ * check we're not on an edge so join finds the other area */
+ is_gesture = ((is_in_area_actionzone(sad->sa1, &event->x) != sad->az) &&
+ (screen_find_active_scredge(CTX_wm_screen(C), event->x, event->y) == NULL));
+ }
+ else {
+ const int delta_min = 1;
+ is_gesture = (ABS(delta_x) > delta_min || ABS(delta_y) > delta_min);
+ }
+
/* gesture is large enough? */
- if (ABS(delta_x) > delta_min || ABS(delta_y) > delta_min) {
-
- /* second area, for join */
+ if (is_gesture) {
+ /* second area, for join when (sa1 != sa2) */
sad->sa2 = screen_areahascursor(CTX_wm_screen(C), event->x, event->y);
/* apply sends event */
actionzone_apply(C, op, sad->az->type);
More information about the Bf-blender-cvs
mailing list