[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34586] trunk/blender/source/blender/ editors/screen: Bugfix #25874
Ton Roosendaal
ton at blender.org
Mon Jan 31 18:28:04 CET 2011
Revision: 34586
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34586
Author: ton
Date: 2011-01-31 17:28:03 +0000 (Mon, 31 Jan 2011)
Log Message:
-----------
Bugfix #25874
Area split error: if the first split position was exactly aligned
with another 'edge' it merged the edges, causing the subdivision
layout to go haywire. Only happens in rare occasions, good find
this report :)
Modified Paths:
--------------
trunk/blender/source/blender/editors/screen/screen_edit.c
trunk/blender/source/blender/editors/screen/screen_intern.h
trunk/blender/source/blender/editors/screen/screen_ops.c
Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c 2011-01-31 16:34:56 UTC (rev 34585)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c 2011-01-31 17:28:03 UTC (rev 34586)
@@ -346,7 +346,7 @@
}
}
-ScrArea *area_split(bScreen *sc, ScrArea *sa, char dir, float fac)
+ScrArea *area_split(bScreen *sc, ScrArea *sa, char dir, float fac, int merge)
{
ScrArea *newa=NULL;
ScrVert *sv1, *sv2;
@@ -400,7 +400,8 @@
}
/* remove double vertices en edges */
- removedouble_scrverts(sc);
+ if(merge)
+ removedouble_scrverts(sc);
removedouble_scredges(sc);
removenotused_scredges(sc);
@@ -1611,7 +1612,7 @@
oldscreen->animtimer= NULL;
/* returns the top small area */
- newa= area_split(sc, (ScrArea *)sc->areabase.first, 'h', 0.99f);
+ newa= area_split(sc, (ScrArea *)sc->areabase.first, 'h', 0.99f, 1);
ED_area_newspace(C, newa, SPACE_INFO);
/* use random area when we have no active one, e.g. when the
Modified: trunk/blender/source/blender/editors/screen/screen_intern.h
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_intern.h 2011-01-31 16:34:56 UTC (rev 34585)
+++ trunk/blender/source/blender/editors/screen/screen_intern.h 2011-01-31 17:28:03 UTC (rev 34586)
@@ -37,7 +37,7 @@
/* screen_edit.c */
ScrEdge *screen_findedge(bScreen *sc, ScrVert *v1, ScrVert *v2);
-ScrArea *area_split(bScreen *sc, ScrArea *sa, char dir, float fac);
+ScrArea *area_split(bScreen *sc, ScrArea *sa, char dir, float fac, int merge);
int screen_area_join(bContext *C, bScreen* scr, ScrArea *sa1, ScrArea *sa2);
int area_getorientation(ScrArea *sa, ScrArea *sb);
void select_connected_scredge(bScreen *sc, ScrEdge *edge);
Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c 2011-01-31 16:34:56 UTC (rev 34585)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c 2011-01-31 17:28:03 UTC (rev 34586)
@@ -1169,7 +1169,7 @@
fac= RNA_float_get(op->ptr, "factor");
dir= RNA_enum_get(op->ptr, "direction");
- sd->narea= area_split(sc, sd->sarea, dir, fac);
+ sd->narea= area_split(sc, sd->sarea, dir, fac, 0); /* 0 = no merge */
if(sd->narea) {
ScrVert *sv;
More information about the Bf-blender-cvs
mailing list