From a1a750f6256272ae29cd312b5fb6d9c6106c8192 Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Sun, 7 Nov 2021 10:56:35 -0500 Subject: [PATCH] Fix tool singleton hotspots --- indra/newview/lltoolcomp.cpp | 100 +++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 47 deletions(-) diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 24930e21cd9..dd299887f18 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -150,7 +150,7 @@ BOOL LLToolCompInspect::handleMouseDown(S32 x, S32 y, MASK mask) { BOOL handled = FALSE; - if (mCur == LLToolCamera::getInstance()) + if (mCur == LLToolCamera::getInstanceFast()) { handled = mCur->handleMouseDown(x, y, mask); } @@ -224,7 +224,7 @@ void LLToolCompInspect::onMouseCaptureLost() void LLToolCompInspect::keyUp(KEY key, MASK mask) { - if (KEY_ALT == key && mCur == LLToolCamera::getInstance()) + if (KEY_ALT == key && mCur == LLToolCamera::getInstanceFast()) { setCurrentTool(mDefault); mIsToolCameraActive = FALSE; @@ -275,41 +275,43 @@ void LLToolCompTranslate::pickCallback(const LLPickInfo& pick_info) { LLViewerObject* hit_obj = pick_info.getObject(); - LLToolCompTranslate::getInstance()->mManip->highlightManipulators(pick_info.mMousePt.mX, pick_info.mMousePt.mY); - if (!LLToolCompTranslate::getInstance()->mMouseDown) + auto tool_comp_translate = LLToolCompTranslate::getInstanceFast(); + + LLToolCompTranslate::getInstanceFast()->mManip->highlightManipulators(pick_info.mMousePt.mX, pick_info.mMousePt.mY); + if (!tool_comp_translate->mMouseDown) { // fast click on object, but mouse is already up...just do select - LLToolCompTranslate::getInstance()->mSelectRect->handleObjectSelection(pick_info, ALControlCache::EditLinkedParts, FALSE); + tool_comp_translate->mSelectRect->handleObjectSelection(pick_info, ALControlCache::EditLinkedParts, FALSE); return; } - if( hit_obj || LLToolCompTranslate::getInstance()->mManip->getHighlightedPart() != LLManip::LL_NO_PART ) + if( hit_obj || tool_comp_translate->mManip->getHighlightedPart() != LLManip::LL_NO_PART ) { - if (LLToolCompTranslate::getInstance()->mManip->getSelection()->getObjectCount()) + if (tool_comp_translate->mManip->getSelection()->getObjectCount()) { LLEditMenuHandler::gEditMenuHandler = LLSelectMgr::getInstanceFast(); } - BOOL can_move = LLToolCompTranslate::getInstance()->mManip->canAffectSelection(); + BOOL can_move = tool_comp_translate->mManip->canAffectSelection(); - if( LLManip::LL_NO_PART != LLToolCompTranslate::getInstance()->mManip->getHighlightedPart() && can_move) + if( LLManip::LL_NO_PART != tool_comp_translate->mManip->getHighlightedPart() && can_move) { - LLToolCompTranslate::getInstance()->setCurrentTool( LLToolCompTranslate::getInstance()->mManip ); - LLToolCompTranslate::getInstance()->mManip->handleMouseDownOnPart( pick_info.mMousePt.mX, pick_info.mMousePt.mY, pick_info.mKeyMask ); + tool_comp_translate->setCurrentTool( tool_comp_translate->mManip ); + tool_comp_translate->mManip->handleMouseDownOnPart( pick_info.mMousePt.mX, pick_info.mMousePt.mY, pick_info.mKeyMask ); } else { - LLToolCompTranslate::getInstance()->setCurrentTool( LLToolCompTranslate::getInstance()->mSelectRect ); - LLToolCompTranslate::getInstance()->mSelectRect->handlePick( pick_info ); + tool_comp_translate->setCurrentTool( tool_comp_translate->mSelectRect ); + tool_comp_translate->mSelectRect->handlePick( pick_info ); // *TODO: add toggle to trigger old click-drag functionality - // LLToolCompTranslate::getInstance()->mManip->handleMouseDownOnPart( XY_part, x, y, mask); + // tool_comp_translate->mManip->handleMouseDownOnPart( XY_part, x, y, mask); } } else { - LLToolCompTranslate::getInstance()->setCurrentTool( LLToolCompTranslate::getInstance()->mSelectRect ); - LLToolCompTranslate::getInstance()->mSelectRect->handlePick( pick_info ); + tool_comp_translate->setCurrentTool( tool_comp_translate->mSelectRect ); + tool_comp_translate->mSelectRect->handlePick( pick_info ); } } @@ -323,11 +325,11 @@ LLTool* LLToolCompTranslate::getOverrideTool(MASK mask) { if (mask == MASK_CONTROL) { - return LLToolCompRotate::getInstance(); + return LLToolCompRotate::getInstanceFast(); } else if (mask == (MASK_CONTROL | MASK_SHIFT)) { - return LLToolCompScale::getInstance(); + return LLToolCompScale::getInstanceFast(); } return LLToolComposite::getOverrideTool(mask); } @@ -399,36 +401,38 @@ void LLToolCompScale::pickCallback(const LLPickInfo& pick_info) { LLViewerObject* hit_obj = pick_info.getObject(); - LLToolCompScale::getInstance()->mManip->highlightManipulators(pick_info.mMousePt.mX, pick_info.mMousePt.mY); - if (!LLToolCompScale::getInstance()->mMouseDown) + auto tool_comp_scale = LLToolCompScale::getInstanceFast(); + + tool_comp_scale->mManip->highlightManipulators(pick_info.mMousePt.mX, pick_info.mMousePt.mY); + if (!tool_comp_scale->mMouseDown) { // fast click on object, but mouse is already up...just do select - LLToolCompScale::getInstance()->mSelectRect->handleObjectSelection(pick_info, ALControlCache::EditLinkedParts, FALSE); + tool_comp_scale->mSelectRect->handleObjectSelection(pick_info, ALControlCache::EditLinkedParts, FALSE); return; } - if( hit_obj || LLToolCompScale::getInstance()->mManip->getHighlightedPart() != LLManip::LL_NO_PART) + if( hit_obj || tool_comp_scale->mManip->getHighlightedPart() != LLManip::LL_NO_PART) { - if (LLToolCompScale::getInstance()->mManip->getSelection()->getObjectCount()) + if (tool_comp_scale->mManip->getSelection()->getObjectCount()) { LLEditMenuHandler::gEditMenuHandler = LLSelectMgr::getInstanceFast(); } - if( LLManip::LL_NO_PART != LLToolCompScale::getInstance()->mManip->getHighlightedPart() ) + if( LLManip::LL_NO_PART != tool_comp_scale->mManip->getHighlightedPart() ) { - LLToolCompScale::getInstance()->setCurrentTool( LLToolCompScale::getInstance()->mManip ); - LLToolCompScale::getInstance()->mManip->handleMouseDownOnPart( pick_info.mMousePt.mX, pick_info.mMousePt.mY, pick_info.mKeyMask ); + tool_comp_scale->setCurrentTool( tool_comp_scale->mManip ); + tool_comp_scale->mManip->handleMouseDownOnPart( pick_info.mMousePt.mX, pick_info.mMousePt.mY, pick_info.mKeyMask ); } else { - LLToolCompScale::getInstance()->setCurrentTool( LLToolCompScale::getInstance()->mSelectRect ); - LLToolCompScale::getInstance()->mSelectRect->handlePick( pick_info ); + tool_comp_scale->setCurrentTool( tool_comp_scale->mSelectRect ); + tool_comp_scale->mSelectRect->handlePick( pick_info ); } } else { - LLToolCompScale::getInstance()->setCurrentTool( LLToolCompScale::getInstance()->mSelectRect ); - LLToolCompScale::getInstance()->mSelectRect->handlePick( pick_info ); + tool_comp_scale->setCurrentTool( tool_comp_scale->mSelectRect ); + tool_comp_scale->mSelectRect->handlePick( pick_info ); } } @@ -442,7 +446,7 @@ LLTool* LLToolCompScale::getOverrideTool(MASK mask) { if (mask == MASK_CONTROL) { - return LLToolCompRotate::getInstance(); + return LLToolCompRotate::getInstanceFast(); } return LLToolComposite::getOverrideTool(mask); @@ -528,8 +532,9 @@ void LLToolCompCreate::pickCallback(const LLPickInfo& pick_info) MASK mask = (pick_info.mKeyMask & ~MASK_SHIFT); mask = (mask & ~MASK_CONTROL); - LLToolCompCreate::getInstance()->setCurrentTool( LLToolCompCreate::getInstance()->mSelectRect ); - LLToolCompCreate::getInstance()->mSelectRect->handlePick( pick_info ); + auto tool_comp_create = LLToolCompCreate::getInstanceFast(); + tool_comp_create->setCurrentTool(tool_comp_create->mSelectRect ); + tool_comp_create->mSelectRect->handlePick( pick_info ); } BOOL LLToolCompCreate::handleDoubleClick(S32 x, S32 y, MASK mask) @@ -599,35 +604,36 @@ void LLToolCompRotate::pickCallback(const LLPickInfo& pick_info) { LLViewerObject* hit_obj = pick_info.getObject(); - LLToolCompRotate::getInstance()->mManip->highlightManipulators(pick_info.mMousePt.mX, pick_info.mMousePt.mY); - if (!LLToolCompRotate::getInstance()->mMouseDown) + auto tool_comp_rotate = LLToolCompRotate::getInstanceFast(); + tool_comp_rotate->mManip->highlightManipulators(pick_info.mMousePt.mX, pick_info.mMousePt.mY); + if (!tool_comp_rotate->mMouseDown) { // fast click on object, but mouse is already up...just do select - LLToolCompRotate::getInstance()->mSelectRect->handleObjectSelection(pick_info, ALControlCache::EditLinkedParts, FALSE); + tool_comp_rotate->mSelectRect->handleObjectSelection(pick_info, ALControlCache::EditLinkedParts, FALSE); return; } - if( hit_obj || LLToolCompRotate::getInstance()->mManip->getHighlightedPart() != LLManip::LL_NO_PART) + if( hit_obj || tool_comp_rotate->mManip->getHighlightedPart() != LLManip::LL_NO_PART) { - if (LLToolCompRotate::getInstance()->mManip->getSelection()->getObjectCount()) + if (tool_comp_rotate->mManip->getSelection()->getObjectCount()) { LLEditMenuHandler::gEditMenuHandler = LLSelectMgr::getInstanceFast(); } - if( LLManip::LL_NO_PART != LLToolCompRotate::getInstance()->mManip->getHighlightedPart() ) + if( LLManip::LL_NO_PART != tool_comp_rotate->mManip->getHighlightedPart() ) { - LLToolCompRotate::getInstance()->setCurrentTool( LLToolCompRotate::getInstance()->mManip ); - LLToolCompRotate::getInstance()->mManip->handleMouseDownOnPart( pick_info.mMousePt.mX, pick_info.mMousePt.mY, pick_info.mKeyMask ); + tool_comp_rotate->setCurrentTool( tool_comp_rotate->mManip ); + tool_comp_rotate->mManip->handleMouseDownOnPart( pick_info.mMousePt.mX, pick_info.mMousePt.mY, pick_info.mKeyMask ); } else { - LLToolCompRotate::getInstance()->setCurrentTool( LLToolCompRotate::getInstance()->mSelectRect ); - LLToolCompRotate::getInstance()->mSelectRect->handlePick( pick_info ); + tool_comp_rotate->setCurrentTool( tool_comp_rotate->mSelectRect ); + tool_comp_rotate->mSelectRect->handlePick( pick_info ); } } else { - LLToolCompRotate::getInstance()->setCurrentTool( LLToolCompRotate::getInstance()->mSelectRect ); - LLToolCompRotate::getInstance()->mSelectRect->handlePick( pick_info ); + tool_comp_rotate->setCurrentTool( tool_comp_rotate->mSelectRect ); + tool_comp_rotate->mSelectRect->handlePick( pick_info ); } } @@ -641,7 +647,7 @@ LLTool* LLToolCompRotate::getOverrideTool(MASK mask) { if (mask == (MASK_CONTROL | MASK_SHIFT)) { - return LLToolCompScale::getInstance(); + return LLToolCompScale::getInstanceFast(); } return LLToolComposite::getOverrideTool(mask); } @@ -758,7 +764,7 @@ BOOL LLToolCompGun::handleMouseDown(S32 x, S32 y, MASK mask) gGrabTransientTool = this; LLToolMgr::getInstanceFast()->getCurrentToolset()->selectTool( (LLTool*) mGrab ); - return LLToolGrab::getInstance()->handleMouseDown(x, y, mask); + return LLToolGrab::getInstanceFast()->handleMouseDown(x, y, mask); } -- GitLab