diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index 4a1a3a5027..5c0b8d2d58 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -2004,6 +2004,24 @@ void LLAgentCamera::handleScrollWheel(S32 clicks)
}
else if (mFocusOnAvatar && (mCameraMode == CAMERA_MODE_THIRD_PERSON))
{
+ // Camera focus and offset with CTRL/SHIFT + Scroll wheel
+ MASK mask=gKeyboard->currentMask(TRUE);
+ if(mask & MASK_SHIFT)
+ {
+ LLVector3d offset=gSavedSettings.getVector3d("FocusOffsetRearView");
+ offset.mdV[VZ]+=0.1f*(F32) clicks;
+ gSavedSettings.setVector3d("FocusOffsetRearView",offset);
+ return;
+ }
+ else if(mask & MASK_CONTROL)
+ {
+ LLVector3 offset=gSavedSettings.getVector3("CameraOffsetRearView");
+ offset.mV[VZ]+=0.1f*(F32) clicks;
+ gSavedSettings.setVector3("CameraOffsetRearView",offset);
+ return;
+ }
+ //
+
F32 camera_offset_initial_mag = getCameraOffsetInitial().magVec();
F32 current_zoom_fraction = mTargetCameraDistance / (camera_offset_initial_mag * gSavedSettings.getF32("CameraOffsetScale"));
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index bc9c98fcf1..81142e6b8b 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -4341,6 +4341,11 @@ void handle_reset_view()
gAgentCamera.resetView();
//
+ // Camera focus and offset with CTRL/SHIFT + Scroll wheel
+ gSavedSettings.getControl("FocusOffsetRearView")->resetToDefault();
+ gSavedSettings.getControl("CameraOffsetRearView")->resetToDefault();
+ //
+
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
reset_view_final( TRUE );
LLFloaterCamera::resetCameraMode();