diff options
author | Andrew Meadows <andrew@lindenlab.com> | 2010-10-11 10:40:05 -0700 |
---|---|---|
committer | Andrew Meadows <andrew@lindenlab.com> | 2010-10-11 10:40:05 -0700 |
commit | 92a8d93b0d3084c1ccd4fb9cccc285bc14d01404 (patch) | |
tree | a07a9cba41f8609a6cfc6449877ca5c2d6ddfdd9 /indra/newview/lltoolpie.cpp | |
parent | c2f5bc0b129e0e0d2606a8e7849bbf37eb0276ea (diff) | |
parent | 48c2b2496d3ed6aeeebb0bc8950725f8ef7e305f (diff) |
Another merge from http://hg.secondlife.com/viewer-development
Diffstat (limited to 'indra/newview/lltoolpie.cpp')
-rw-r--r-- | indra/newview/lltoolpie.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index d8be70e546..864de018e0 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -619,6 +619,25 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask) return TRUE; } } + else if (gSavedSettings.getBOOL("DoubleClickTeleport")) + { + LLViewerObject* objp = mPick.getObject(); + LLViewerObject* parentp = objp ? objp->getRootEdit() : NULL; + + bool is_in_world = mPick.mObjectID.notNull() && objp && !objp->isHUDAttachment(); + bool is_land = mPick.mPickType == LLPickInfo::PICK_LAND; + bool pos_non_zero = !mPick.mPosGlobal.isExactlyZero(); + bool has_touch_handler = (objp && objp->flagHandleTouch()) || (parentp && parentp->flagHandleTouch()); + bool has_click_action = final_click_action(objp); + + if (pos_non_zero && (is_land || (is_in_world && !has_touch_handler && !has_click_action))) + { + LLVector3d pos = mPick.mPosGlobal; + pos.mdV[VZ] += gAgentAvatarp->getPelvisToFoot(); + gAgent.teleportViaLocationLookAt(pos); + return TRUE; + } + } return FALSE; } |