diff options
| author | Karl Steifvater <qarl@lindenlab.com> | 2008-07-23 21:20:19 +0000 |
|---|---|---|
| committer | Karl Steifvater <qarl@lindenlab.com> | 2008-07-23 21:20:19 +0000 |
| commit | 52562e2e664c70dcd476291820ac02b893e489b8 (patch) | |
| tree | 5137f49f194a6a28f290385c38f689d77656b2e0 /indra/newview/lltoolselect.cpp | |
| parent | bc39ad916e8f23ffae12184eee675aa7c1be2ca9 (diff) | |
svn merge -r92720:92721 svn+ssh://svn.lindenlab.com/svn/linden/branches/uv-picking-merge
QAR-698 / DEV-9985 add touch "position" information to touch-events in LSL
Diffstat (limited to 'indra/newview/lltoolselect.cpp')
| -rw-r--r-- | indra/newview/lltoolselect.cpp | 45 |
1 files changed, 16 insertions, 29 deletions
diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp index 8f84013a26..e74cd58924 100644 --- a/indra/newview/lltoolselect.cpp +++ b/indra/newview/lltoolselect.cpp @@ -64,39 +64,24 @@ LLToolSelect::LLToolSelect( LLToolComposite* composite ) // True if you selected an object. BOOL LLToolSelect::handleMouseDown(S32 x, S32 y, MASK mask) { - BOOL handled = FALSE; - - // didn't click in any UI object, so must have clicked in the world - LLViewerObject* object = NULL; - - // You must hit the body for this tool to think you hit the object. - object = gObjectList.findObject( gLastHitObjectID ); - - if (object) - { - mSelectObjectID = object->getID(); - handled = TRUE; - } - else - { - mSelectObjectID.setNull(); - } + // do immediate pick query + mPick = gViewerWindow->pickImmediate(x, y, TRUE); // Pass mousedown to agent LLTool::handleMouseDown(x, y, mask); - return handled; + return mPick.getObject().notNull(); } -BOOL LLToolSelect::handleDoubleClick(S32 x, S32 y, MASK mask) -{ - //RN: double click to toggle individual/linked picking??? - return LLTool::handleDoubleClick(x, y, mask); -} // static -LLSafeHandle<LLObjectSelection> LLToolSelect::handleObjectSelection(LLViewerObject *object, MASK mask, BOOL ignore_group, BOOL temp_select) +LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pick, BOOL ignore_group, BOOL temp_select, BOOL select_root) { + LLViewerObject* object = pick.getObject(); + if (select_root) + { + object = object->getRootEdit(); + } BOOL select_owned = gSavedSettings.getBOOL("SelectOwnedOnly"); BOOL select_movable = gSavedSettings.getBOOL("SelectMovableOnly"); @@ -108,14 +93,16 @@ LLSafeHandle<LLObjectSelection> LLToolSelect::handleObjectSelection(LLViewerObje LLSelectMgr::getInstance()->setForceSelection(TRUE); } - BOOL extend_select = (mask == MASK_SHIFT) || (mask == MASK_CONTROL); + BOOL extend_select = (pick.mKeyMask == MASK_SHIFT) || (pick.mKeyMask == MASK_CONTROL); // If no object, check for icon, then just deselect if (!object) { - if (gLastHitHUDIcon && gLastHitHUDIcon->getSourceObject()) + LLHUDIcon* last_hit_hud_icon = pick.mHUDIcon; + + if (last_hit_hud_icon && last_hit_hud_icon->getSourceObject()) { - LLFloaterScriptDebug::show(gLastHitHUDIcon->getSourceObject()->getID()); + LLFloaterScriptDebug::show(last_hit_hud_icon->getSourceObject()->getID()); } else if (!extend_select) { @@ -240,8 +227,7 @@ BOOL LLToolSelect::handleMouseUp(S32 x, S32 y, MASK mask) { mIgnoreGroup = gSavedSettings.getBOOL("EditLinkedParts"); - LLViewerObject* object = gObjectList.findObject(mSelectObjectID); - LLToolSelect::handleObjectSelection(object, mask, mIgnoreGroup, FALSE); + handleObjectSelection(mPick, mIgnoreGroup, FALSE); return LLTool::handleMouseUp(x, y, mask); } @@ -275,3 +261,4 @@ void LLToolSelect::onMouseCaptureLost() + |
