[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47488] branches/soc-2012-bratwurst/source /blender/editors/screen/screen_ops.c: Dragging areas closed may be disabled by holding the ctrl key.

Jorge Rodriguez bs.vino at gmail.com
Wed Jun 6 01:50:10 CEST 2012


Revision: 47488
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47488
Author:   vino
Date:     2012-06-05 23:50:05 +0000 (Tue, 05 Jun 2012)
Log Message:
-----------
Dragging areas closed may be disabled by holding the ctrl key.

Modified Paths:
--------------
    branches/soc-2012-bratwurst/source/blender/editors/screen/screen_ops.c

Modified: branches/soc-2012-bratwurst/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/soc-2012-bratwurst/source/blender/editors/screen/screen_ops.c	2012-06-05 22:53:17 UTC (rev 47487)
+++ branches/soc-2012-bratwurst/source/blender/editors/screen/screen_ops.c	2012-06-05 23:50:05 UTC (rev 47488)
@@ -890,7 +890,7 @@
  */
 
 typedef struct sAreaMoveData {
-	int bigger, smaller, origval, step;
+	int bigger, smaller, origval, step, nomerge;
 	char dir;
 	ScrArea* split1;
 	ScrArea* split2;
@@ -950,6 +950,7 @@
 	md->dir = scredge_is_horizontal(actedge) ? 'h' : 'v';
 	if (md->dir == 'h') md->origval = actedge->v1->vec.y;
 	else md->origval = actedge->v1->vec.x;
+	md->nomerge = FALSE;
 	
 	select_connected_scredge(sc, actedge);
 	/* now all vertices with 'flag==1' are the ones that can be moved. */
@@ -975,6 +976,9 @@
 	if (delta > bigger)
 		overflow = 1;
 
+	if (!split1)
+		overflow = 0;
+
 	delta = CLAMPIS(delta, -smaller, bigger);
 
 	for (v1 = sc->vertbase.first; v1; v1 = v1->next) {
@@ -1016,8 +1020,11 @@
 		}
 	}
 
-	*split1 = NULL;
-	*split2 = NULL;
+	if (split1)
+	{
+		*split1 = NULL;
+		*split2 = NULL;
+	}
 
 	for (sa = sc->areabase.first; sa; sa = sa->next) {
 		if ((sa->v1->flag&VERT_FLAG_SELECTED) || (sa->v2->flag&VERT_FLAG_SELECTED) || (sa->v3->flag&VERT_FLAG_SELECTED) || (sa->v4->flag&VERT_FLAG_SELECTED))
@@ -1065,7 +1072,7 @@
 	}
 
 	// split2 is the one that's closing
-	if (*split2 && (*split2)->type->spaceid == SPACE_INFO)
+	if (split2 && *split2 && (*split2)->type->spaceid == SPACE_INFO)
 	{
 		// Don't allow dragging closed of SPACE_INFO.
 		// It should be tougher to close, most users want it always open and new users don't want to accidentally close it.
@@ -1095,7 +1102,7 @@
 	int delta;
 	
 	delta = RNA_int_get(op->ptr, "delta");
-	area_move_apply_do(C, md->origval, delta, md->dir, md->bigger, md->smaller, &md->split1, &md->split2);
+	area_move_apply_do(C, md->origval, delta, md->dir, md->bigger, md->smaller, md->nomerge?NULL:&md->split1, md->nomerge?NULL:&md->split2);
 }
 
 static void area_move_exit(bContext *C, wmOperator *op)
@@ -1185,7 +1192,12 @@
 			delta = (md->dir == 'v') ? event->x - x : event->y - y;
 			if (md->step) delta = delta - (delta % md->step);
 			RNA_int_set(op->ptr, "delta", delta);
-			
+
+			if (event->ctrl)
+				md->nomerge = TRUE;
+			else
+				md->nomerge = FALSE;
+
 			area_move_apply(C, op);
 			break;
 			
@@ -1591,7 +1603,7 @@
 			{
 				ScrArea* s1 = NULL;
 				ScrArea* s2 = NULL;
-				area_move_apply_do(C, sd->origval, sd->delta, dir, sd->bigger, sd->smaller, &s1, &s2);
+				area_move_apply_do(C, sd->origval, sd->delta, dir, sd->bigger, sd->smaller, event->ctrl?NULL:&s1, event->ctrl?NULL:&s2);
 				sd->rejoin = !!s1;
 			}
 			else {




More information about the Bf-blender-cvs mailing list