diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index a8e0a5c2a..af8bad3d6 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -2272,6 +2272,7 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate)
if (mCameraMode == CAMERA_MODE_MOUSELOOK)
{
animate = FALSE;
+ if (gViewerWindow->getRightMouseDown()) LLViewerCamera::instance().loadDefaultFOV(); // We could be zoomed in
}
startCameraAnimation();
@@ -2361,6 +2362,7 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)
mCurrentCameraDistance = MIN_CAMERA_DISTANCE;
mTargetCameraDistance = MIN_CAMERA_DISTANCE;
animate = FALSE;
+ if (gViewerWindow->getRightMouseDown()) LLViewerCamera::instance().loadDefaultFOV(); // We could be zoomed in
}
updateLastCamera();
mCameraMode = CAMERA_MODE_THIRD_PERSON;
diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp
index 44c8c4a0e..85cc032a3 100644
--- a/indra/newview/lltoolcomp.cpp
+++ b/indra/newview/lltoolcomp.cpp
@@ -638,7 +638,7 @@ void LLToolCompRotate::render()
LLToolCompGun::LLToolCompGun()
: LLToolComposite(std::string("Mouselook"))
- , mRightMouseButton(false), mMenuShown(false), mTimerFOV(), mOriginalFOV(), mStartFOV(), mTargetFOV() //
+ , mMenuShown(false), mTimerFOV(), mOriginalFOV(), mStartFOV(), mTargetFOV() //
{
mGun = new LLToolGun(this);
mGrab = new LLToolGrab(this);
@@ -764,10 +764,9 @@ void LLToolCompGun::handleSelect()
void LLToolCompGun::handleDeselect()
{
LLToolComposite::handleDeselect();
- if (mRightMouseButton || mTimerFOV.getStarted()) // Singu Note: Load Default FOV if we were zoomed in
+ if (mTimerFOV.getStarted()) // Note: Load Default FOV if we were zooming in
{
LLViewerCamera::getInstance()->loadDefaultFOV();
- mRightMouseButton = false;
}
setMouseCapture(FALSE);
}
@@ -777,22 +776,18 @@ void LLToolCompGun::handleDeselect()
BOOL LLToolCompGun::handleRightMouseUp(S32 x, S32 y, MASK mask)
{
// Singu Note: Beware the alt-click menu
- if (mRightMouseButton)
- {
- mRightMouseButton = false;
-
- mStartFOV = LLViewerCamera::getInstance()->getDefaultFOV();
- mTargetFOV = mOriginalFOV;
- gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? LLViewerCamera::getInstance()->setDefaultFOV(mTargetFOV) :
- mTimerFOV.start();
- }
-
if (mMenuShown)
{
mMenuShown = false;
return LLToolComposite::handleRightMouseUp(x, y, mask);
}
+ LLViewerCamera& cam(LLViewerCamera::instance());
+ mStartFOV = cam.getDefaultFOV();
+ mTargetFOV = mOriginalFOV;
+ gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? cam.setDefaultFOV(mTargetFOV) : mTimerFOV.start();
+ cam.mSavedFOVLoaded = false;
+
return TRUE;
}
@@ -805,27 +800,27 @@ BOOL LLToolCompGun::handleRightMouseDown(S32 x, S32 y, MASK mask)
return false;
}
- mRightMouseButton = true;
-
- if(!mTimerFOV.getStarted())
+ LLViewerCamera& cam(LLViewerCamera::instance());
+ if (!mTimerFOV.getStarted())
{
- mStartFOV = LLViewerCamera::getInstance()->getAndSaveDefaultFOV();
+ mStartFOV = cam.getAndSaveDefaultFOV();
mOriginalFOV = mStartFOV;
}
- else mStartFOV = LLViewerCamera::getInstance()->getDefaultFOV();
+ else mStartFOV = cam.getDefaultFOV();
mTargetFOV = gSavedSettings.getF32("ExodusAlternativeFOV");
- gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? LLViewerCamera::getInstance()->setDefaultFOV(mTargetFOV) :
- mTimerFOV.start();
+ gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? cam.setDefaultFOV(mTargetFOV) : mTimerFOV.start();
+ cam.mSavedFOVLoaded = false;
return TRUE;
}
BOOL LLToolCompGun::handleScrollWheel(S32 x, S32 y, S32 clicks)
{
- if (mRightMouseButton)
+ if (gViewerWindow->getRightMouseDown())
{
- mStartFOV = LLViewerCamera::getInstance()->getDefaultFOV();
+ LLViewerCamera& cam(LLViewerCamera::instance());
+ mStartFOV = cam.getDefaultFOV();
gSavedSettings.setF32(
"ExodusAlternativeFOV",
@@ -834,8 +829,8 @@ BOOL LLToolCompGun::handleScrollWheel(S32 x, S32 y, S32 clicks)
llclamp(mTargetFOV -= (0.05f * -clicks), 0.1f, 3.0f)
);
- gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? LLViewerCamera::getInstance()->setDefaultFOV(mTargetFOV) :
- mTimerFOV.start();
+ gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? cam.setDefaultFOV(mTargetFOV) : mTimerFOV.start();
+ cam.mSavedFOVLoaded = false;
}
else if (clicks > 0) gAgentCamera.changeCameraToDefault();
@@ -848,16 +843,17 @@ void LLToolCompGun::draw()
{
if (mTimerFOV.getStarted())
{
- if (!LLViewerCamera::getInstance()->mSavedFOVLoaded && mStartFOV != mTargetFOV)
+ LLViewerCamera& cam(LLViewerCamera::instance());
+ if (!cam.mSavedFOVLoaded && mStartFOV != mTargetFOV)
{
F32 timer = mTimerFOV.getElapsedTimeF32();
if (timer > 0.15f)
{
- LLViewerCamera::getInstance()->setDefaultFOV(mTargetFOV);
+ cam.setDefaultFOV(mTargetFOV);
mTimerFOV.stop();
}
- else LLViewerCamera::getInstance()->setDefaultFOV(lerp(mStartFOV, mTargetFOV, timer * 6.66f));
+ else cam.setDefaultFOV(lerp(mStartFOV, mTargetFOV, timer * 6.66f));
}
else mTimerFOV.stop();
}
diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h
index 07cf2815b..c1169f0ec 100644
--- a/indra/newview/lltoolcomp.h
+++ b/indra/newview/lltoolcomp.h
@@ -235,7 +235,7 @@ protected:
//
private:
- bool mRightMouseButton, mMenuShown;
+ bool mMenuShown;
LLTimer mTimerFOV;
F32 mOriginalFOV, mStartFOV, mTargetFOV;
//
diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp
index 0065a7f28..2cdfd172a 100644
--- a/indra/newview/lltoolfocus.cpp
+++ b/indra/newview/lltoolfocus.cpp
@@ -313,11 +313,9 @@ BOOL LLToolCamera::handleMouseUp(S32 x, S32 y, MASK mask)
return TRUE;
}
-static bool right_hold_mouse_walk=false;
-
BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask)
{
- if(right_hold_mouse_walk)
+ if (gViewerWindow->getRightMouseDown())
{
agent_push_forward(KEYSTATE_LEVEL);
}
@@ -461,7 +459,6 @@ BOOL LLToolCamera::handleRightMouseDown(S32 x, S32 y, MASK mask)
if(mMouseSteering)
{
agent_push_forward(KEYSTATE_DOWN);
- right_hold_mouse_walk = true;
return TRUE;
}
else
@@ -472,10 +469,9 @@ BOOL LLToolCamera::handleRightMouseDown(S32 x, S32 y, MASK mask)
BOOL LLToolCamera::handleRightMouseUp(S32 x, S32 y, MASK mask)
{
- if(mMouseSteering || right_hold_mouse_walk)
+ if (mMouseSteering)
{
agent_push_forward(KEYSTATE_UP);
- right_hold_mouse_walk = false;
return TRUE;
}
else
@@ -487,5 +483,5 @@ BOOL LLToolCamera::handleRightMouseUp(S32 x, S32 y, MASK mask)
void LLToolCamera::onMouseCaptureLost()
{
releaseMouse();
- handleRightMouseUp(0,0,0);
+ if (gViewerWindow->getRightMouseDown()) agent_push_forward(KEYSTATE_UP);
}
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index 041e804e7..3247d6884 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -751,6 +751,7 @@ void LLViewerCamera::setDefaultFOV(F32 vertical_fov_rads)
//
void LLViewerCamera::loadDefaultFOV()
{
+ if (mSavedFOVLoaded) return;
setView(mSavedFOVDefault);
mSavedFOVLoaded = true;
mCameraFOVDefault = mSavedFOVDefault;