From 01e26f5499b224994a720e417ae7d3fc48239f62 Mon Sep 17 00:00:00 2001
From: "Karl Stiefvater (qarl)" <qarl@lindenlab.com>
Date: Mon, 1 Mar 2010 18:45:53 -0600
Subject: EXT-3120 drag select lasso for objects is inaccurate reviewed by
 davep

---
 indra/newview/llviewercamera.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index bd4f172907..0051f46716 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -338,7 +338,12 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 	{
 		// make a tiny little viewport
 		// anything drawn into this viewport will be "selected"
-		GLint*		viewport = (GLint*) gGLViewport;
+
+		GLint viewport[4];
+		viewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
+		viewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom;
+		viewport[2] = gViewerWindow->getWorldViewRectRaw().getWidth();
+		viewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();
 		
 		proj_mat = gl_pick_matrix(x+width/2.f, y_from_bot+height/2.f, (GLfloat) width, (GLfloat) height, viewport);
 
@@ -405,6 +410,9 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 	
 	if (for_selection && (width > 1 || height > 1))
 	{
+		// NB: as of this writing, i believe the code below is broken (doesn't take into account the world view, assumes entire window)
+		// however, it is also unused (the GL matricies are used for selection, (see LLCamera::sphereInFrustum())) and so i'm not
+		// comfortable hacking on it.
 		calculateFrustumPlanesFromWindow((F32)(x - width / 2) / (F32)gViewerWindow->getWindowWidthScaled() - 0.5f,
 								(F32)(y_from_bot - height / 2) / (F32)gViewerWindow->getWindowHeightScaled() - 0.5f,
 								(F32)(x + width / 2) / (F32)gViewerWindow->getWindowWidthScaled() - 0.5f,
-- 
cgit v1.2.3