From df1ba7da75f9b82f81693d5e0adfec29b2f4a424 Mon Sep 17 00:00:00 2001
From: Campbell Barton <ideasman42@gmail.com>
Date: Fri, 21 Mar 2008 16:27:43 +0000
Subject: [PATCH] make border zoom ignore backfaces in texture mode and zero
 alpha areas of billboards.

---
 source/blender/makesdna/DNA_view3d_types.h |  2 +-
 source/blender/src/drawview.c              | 17 +++++++++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 78605464268..06db6d099de 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -103,7 +103,7 @@ typedef struct View3D {
 	
 	/**
 	 * The drawing mode for the 3d display. Set to OB_WIRE, OB_SOLID,
-	 * OB_SHADED or OB_TEXTURED */
+	 * OB_SHADED or OB_TEXTURE */
 	short drawtype;
 	short localview;
 	int lay, layact;
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index fa81bf2b17e..e0919c7ba1c 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -2894,14 +2894,21 @@ void draw_depth(ScrArea *sa, void *spacedata)
 	View3D *v3d= spacedata;
 	Base *base;
 	Scene *sce;
-	short drawtype, zbuf;
-	
+	short drawtype, zbuf, flag;
+	float glalphaclip;
 	/* temp set drawtype to solid */
+	
+	/* Setting these temporarily is not nice */
 	drawtype = v3d->drawtype;
 	zbuf = v3d->zbuf;
-	v3d->drawtype = OB_SOLID;
-	
+	flag = v3d->flag;
+	glalphaclip = U.glalphaclip;
 	
+	U.glalphaclip = 0.5; /* not that nice but means we wont zoom into billboards */
+	v3d->flag &= ~V3D_SELECT_OUTLINE;
+	if ((v3d->drawtype != OB_SOLID) && (v3d->drawtype != OB_TEXTURE)) 
+		v3d->drawtype = OB_SOLID;
+
 	setwinmatrixview3d(sa->winx, sa->winy, NULL);	/* 0= no pick rect */
 	setviewmatrixview3d();	/* note: calls where_is_object for camera... */
 	
@@ -2980,6 +2987,8 @@ void draw_depth(ScrArea *sa, void *spacedata)
 	
 	v3d->drawtype = drawtype;
 	v3d->zbuf = zbuf;
+	U.glalphaclip = glalphaclip;
+	v3d->flag = flag;
 }
 
 static void draw_viewport_fps(ScrArea *sa);
-- 
GitLab