UI: Fix Bug With Join Area Tolerance

Join area tolerance not properly checking all vertices on shared edge.

Differential Revision: https://developer.blender.org/D5662
This commit is contained in:
2019-09-02 13:06:42 -07:00
parent 47cde3292c
commit d4a905fd85
4 changed files with 11 additions and 7 deletions

View File

@@ -309,22 +309,26 @@ int area_getorientation(ScrArea *sa, ScrArea *sb)
int tolerance = U.pixelsize * 4;
if (saBL->vec.x == sbBR->vec.x && saTL->vec.x == sbTR->vec.x) { /* sa to right of sb = W */
if (ABS(saBL->vec.y - sbBR->vec.y) <= tolerance) {
if ((ABS(saBL->vec.y - sbBR->vec.y) <= tolerance) &&
(ABS(saTL->vec.y - sbTR->vec.y) <= tolerance)) {
return 0;
}
}
else if (saTL->vec.y == sbBL->vec.y && saTR->vec.y == sbBR->vec.y) { /* sa to bottom of sb = N */
if (ABS(saTL->vec.x - sbBL->vec.x) <= tolerance) {
if ((ABS(saTL->vec.x - sbBL->vec.x) <= tolerance) &&
(ABS(saTR->vec.x - sbBR->vec.x) <= tolerance)) {
return 1;
}
}
else if (saTR->vec.x == sbTL->vec.x && saBR->vec.x == sbBL->vec.x) { /* sa to left of sb = E */
if (ABS(saTR->vec.y - sbTL->vec.y) <= tolerance) {
if ((ABS(saTR->vec.y - sbTL->vec.y) <= tolerance) &&
(ABS(saBR->vec.y - sbBL->vec.y) <= tolerance)) {
return 2;
}
}
else if (saBL->vec.y == sbTL->vec.y && saBR->vec.y == sbTR->vec.y) { /* sa on top of sb = S*/
if (ABS(saBL->vec.x - sbTL->vec.x) <= tolerance) {
if ((ABS(saBL->vec.x - sbTL->vec.x) <= tolerance) &&
(ABS(saBR->vec.x - sbTR->vec.x) <= tolerance)) {
return 3;
}
}