Fix/Update Inspect Tool
Solves Issue 1131: Inspect Window while open prevents camming Possibly fixes Issue 928: Have to Click a second time to Inspect an object, I couldn't reproduce, but maybe you still can? Fixes a bug in the name cache connection setting of llfloaterinspect.cpp from upstream.
This commit is contained in:
@@ -239,54 +239,57 @@ void LLFloaterInspect::refresh()
|
|||||||
// actual name and set a placeholder.
|
// actual name and set a placeholder.
|
||||||
if (LLAvatarNameCache::get(idOwner, &av_name))
|
if (LLAvatarNameCache::get(idOwner, &av_name))
|
||||||
{
|
{
|
||||||
// owner_name = av_name.getCompleteName();
|
// owner_name = av_name.getNSName();
|
||||||
// [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
|
// [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
|
||||||
bool fRlvFilterOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idOwner != gAgent.getID()) &&
|
bool fRlvFilterOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idOwner != gAgent.getID()) &&
|
||||||
(!obj->mPermissions->isGroupOwned());
|
(!obj->mPermissions->isGroupOwned());
|
||||||
owner_name = (!fRlvFilterOwner) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
|
owner_name = (!fRlvFilterOwner) ? av_name.getNSName() : RlvStrings::getAnonym(av_name);
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
owner_name = LLTrans::getString("RetrievingData");
|
owner_name = LLTrans::getString("RetrievingData");
|
||||||
LLAvatarNameCache::get(idOwner, boost::bind(&LLFloaterInspect::dirty, this));
|
if (mOwnerNameCacheConnection.find(idOwner) == mOwnerNameCacheConnection.end())
|
||||||
}
|
mOwnerNameCacheConnection.insert(std::make_pair(idOwner, LLAvatarNameCache::get(idOwner, boost::bind(&LLFloaterInspect::onGetOwnerNameCallback, this, _1))));
|
||||||
|
|
||||||
if (LLAvatarNameCache::get(idCreator, &av_name))
|
|
||||||
{
|
|
||||||
// creator_name = av_name.getCompleteName();
|
|
||||||
// [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
|
|
||||||
const LLUUID& idCreator = obj->mPermissions->getCreator();
|
|
||||||
LLAvatarNameCache::get(idCreator, &av_name);
|
|
||||||
bool fRlvFilterCreator = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idCreator != gAgent.getID()) &&
|
|
||||||
( (obj->mPermissions->getOwner() == idCreator) || (RlvUtil::isNearbyAgent(idCreator)) );
|
|
||||||
creator_name = (!fRlvFilterCreator) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
|
|
||||||
// [/RLVa:KB]
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
creator_name = LLTrans::getString("RetrievingData");
|
|
||||||
LLAvatarNameCache::get(idCreator, boost::bind(&LLFloaterInspect::dirty, this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// <edit>
|
// <edit>
|
||||||
if (LLAvatarNameCache::get(idLastOwner, &av_name))
|
if (LLAvatarNameCache::get(idLastOwner, &av_name))
|
||||||
{
|
{
|
||||||
// last_owner_name = av_name.getCompleteName();
|
// last_owner_name = av_name.getNSName();
|
||||||
// [RLVa:LF] - Copied from the above creator check Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
|
// [RLVa:LF] - Copied from the above creator check Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
|
||||||
LLAvatarNameCache::get(idLastOwner, &av_name);
|
LLAvatarNameCache::get(idLastOwner, &av_name);
|
||||||
bool fRlvFilterLastOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idLastOwner != gAgent.getID()) &&
|
bool fRlvFilterLastOwner = gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) && idLastOwner != gAgent.getID() &&
|
||||||
( (obj->mPermissions->getOwner() == idLastOwner) || (RlvUtil::isNearbyAgent(idLastOwner)) );
|
(obj->mPermissions->getOwner() == idLastOwner || RlvUtil::isNearbyAgent(idLastOwner));
|
||||||
last_owner_name = (!fRlvFilterLastOwner) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
|
last_owner_name = (!fRlvFilterLastOwner) ? av_name.getNSName() : RlvStrings::getAnonym(av_name);
|
||||||
// [/RLVa:LF]
|
// [/RLVa:LF]
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
last_owner_name = LLTrans::getString("RetrievingData");
|
last_owner_name = LLTrans::getString("RetrievingData");
|
||||||
LLAvatarNameCache::get(idLastOwner, boost::bind(&LLFloaterInspect::dirty, this));
|
if (mLastOwnerNameCacheConnection.find(idLastOwner) == mLastOwnerNameCacheConnection.end())
|
||||||
|
mLastOwnerNameCacheConnection.insert(std::make_pair(idLastOwner, LLAvatarNameCache::get(idLastOwner, boost::bind(&LLFloaterInspect::onGetLastOwnerNameCallback, this, _1))));
|
||||||
}
|
}
|
||||||
// </edit>
|
// </edit>
|
||||||
|
|
||||||
|
if (LLAvatarNameCache::get(idCreator, &av_name))
|
||||||
|
{
|
||||||
|
// creator_name = av_name.getNSName();
|
||||||
|
// [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a
|
||||||
|
const LLUUID& idCreator = obj->mPermissions->getCreator();
|
||||||
|
LLAvatarNameCache::get(idCreator, &av_name);
|
||||||
|
bool fRlvFilterCreator = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idCreator != gAgent.getID()) &&
|
||||||
|
( (obj->mPermissions->getOwner() == idCreator) || (RlvUtil::isNearbyAgent(idCreator)) );
|
||||||
|
creator_name = (!fRlvFilterCreator) ? av_name.getNSName() : RlvStrings::getAnonym(av_name);
|
||||||
|
// [/RLVa:KB]
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
creator_name = LLTrans::getString("RetrievingData");
|
||||||
|
if (mCreatorNameCacheConnection.find(idCreator) == mCreatorNameCacheConnection.end())
|
||||||
|
mCreatorNameCacheConnection.insert(std::make_pair(idCreator, LLAvatarNameCache::get(idCreator, boost::bind(&LLFloaterInspect::onGetCreatorNameCallback, this, _1))));
|
||||||
|
}
|
||||||
|
|
||||||
row["id"] = obj->getObject()->getID();
|
row["id"] = obj->getObject()->getID();
|
||||||
row["columns"][0]["column"] = "object_name";
|
row["columns"][0]["column"] = "object_name";
|
||||||
row["columns"][0]["type"] = "text";
|
row["columns"][0]["type"] = "text";
|
||||||
@@ -321,8 +324,8 @@ void LLFloaterInspect::refresh()
|
|||||||
row["columns"][5]["value"] = llformat("%d",obj->getObject()->getNumVertices());
|
row["columns"][5]["value"] = llformat("%d",obj->getObject()->getNumVertices());
|
||||||
// inventory silliness
|
// inventory silliness
|
||||||
S32 scripts,total_inv;
|
S32 scripts,total_inv;
|
||||||
std::map<LLUUID,std::pair<S32,S32> >::iterator itr = mInventoryNums.find(obj->getObject()->getID());
|
std::map<LLUUID,std::pair<U32,U32> >::iterator itr = mInventoryNums.find(obj->getObject()->getID());
|
||||||
if(itr != mInventoryNums.end())
|
if (itr != mInventoryNums.end())
|
||||||
{
|
{
|
||||||
scripts = itr->second.first;
|
scripts = itr->second.first;
|
||||||
total_inv = itr->second.second;
|
total_inv = itr->second.second;
|
||||||
@@ -331,10 +334,10 @@ void LLFloaterInspect::refresh()
|
|||||||
{
|
{
|
||||||
scripts = 0;
|
scripts = 0;
|
||||||
total_inv = 0;
|
total_inv = 0;
|
||||||
if(std::find(mQueue.begin(),mQueue.end(),obj->getObject()->getID()) == mQueue.end())
|
if (std::find(mQueue.begin(),mQueue.end(),obj->getObject()->getID()) == mQueue.end())
|
||||||
{
|
{
|
||||||
mQueue.push_back(obj->getObject()->getID());
|
mQueue.push_back(obj->getObject()->getID());
|
||||||
registerVOInventoryListener(obj->getObject(),NULL);
|
registerVOInventoryListener(obj->getObject(), NULL);
|
||||||
requestVOInventory();
|
requestVOInventory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -365,23 +368,19 @@ void LLFloaterInspect::refresh()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// <edit>
|
// <edit>
|
||||||
void LLFloaterInspect::inventoryChanged(LLViewerObject* viewer_object, LLInventoryObject::object_list_t* inv, S32, void* q_id)
|
void LLFloaterInspect::inventoryChanged(LLViewerObject* viewer_object, LLInventoryObject::object_list_t* inv, S32, void*)
|
||||||
{
|
{
|
||||||
std::vector<LLUUID>::iterator iter = std::find(mQueue.begin(),mQueue.end(),viewer_object->getID());
|
std::vector<LLUUID>::iterator iter = std::find(mQueue.begin(),mQueue.end(),viewer_object->getID());
|
||||||
if (viewer_object && inv && iter != mQueue.end() )
|
if (viewer_object && inv && iter != mQueue.end())
|
||||||
{
|
{
|
||||||
S32 scripts = 0;
|
U32 scripts = 0;
|
||||||
LLInventoryObject::object_list_t::const_iterator end = inv->end();
|
LLInventoryObject::object_list_t::const_iterator end = inv->end();
|
||||||
for (LLInventoryObject::object_list_t::const_iterator it = inv->begin(); it != end; ++it)
|
for (LLInventoryObject::object_list_t::const_iterator it = inv->begin(); it != end; ++it)
|
||||||
{
|
if ((*it)->getType() == LLAssetType::AT_LSL_TEXT)
|
||||||
if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
|
|
||||||
{
|
|
||||||
++scripts;
|
++scripts;
|
||||||
}
|
|
||||||
}
|
|
||||||
mInventoryNums[viewer_object->getID()] = std::make_pair(scripts,inv->size());
|
mInventoryNums[viewer_object->getID()] = std::make_pair(scripts,inv->size());
|
||||||
mQueue.erase(iter);
|
mQueue.erase(iter);
|
||||||
mDirty = TRUE;
|
setDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// </edit>
|
// </edit>
|
||||||
@@ -401,6 +400,24 @@ void LLFloaterInspect::dirty()
|
|||||||
setDirty();
|
setDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLFloaterInspect::onGetOwnerNameCallback(const LLUUID& id)
|
||||||
|
{
|
||||||
|
mOwnerNameCacheConnection.erase(id);
|
||||||
|
setDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterInspect::onGetLastOwnerNameCallback(const LLUUID& id)
|
||||||
|
{
|
||||||
|
mLastOwnerNameCacheConnection.erase(id);
|
||||||
|
setDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterInspect::onGetCreatorNameCallback(const LLUUID& id)
|
||||||
|
{
|
||||||
|
mCreatorNameCacheConnection.erase(id);
|
||||||
|
setDirty();
|
||||||
|
}
|
||||||
|
|
||||||
void LLFloaterInspect::draw()
|
void LLFloaterInspect::draw()
|
||||||
{
|
{
|
||||||
if (mDirty)
|
if (mDirty)
|
||||||
|
|||||||
@@ -72,14 +72,21 @@ protected:
|
|||||||
// </edit>
|
// </edit>
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LLFloaterInspect(const LLSD&);
|
void onGetOwnerNameCallback(const LLUUID& id);
|
||||||
|
void onGetLastOwnerNameCallback(const LLUUID& id); // <edit/>
|
||||||
|
void onGetCreatorNameCallback(const LLUUID& id);
|
||||||
|
|
||||||
|
LLFloaterInspect(const LLSD& key);
|
||||||
virtual ~LLFloaterInspect(void);
|
virtual ~LLFloaterInspect(void);
|
||||||
|
|
||||||
LLSafeHandle<LLObjectSelection> mObjectSelection;
|
LLSafeHandle<LLObjectSelection> mObjectSelection;
|
||||||
// <edit>
|
// <edit>
|
||||||
std::map<LLUUID,std::pair<S32,S32> > mInventoryNums; //<scripts,total>
|
std::map<LLUUID,std::pair<U32,U32> > mInventoryNums; //<scripts,total>
|
||||||
std::vector<LLUUID> mQueue;
|
std::vector<LLUUID> mQueue;
|
||||||
// </edit>
|
// </edit>
|
||||||
|
std::map<const LLUUID, boost::signals2::scoped_connection> mOwnerNameCacheConnection;
|
||||||
|
std::map<const LLUUID, boost::signals2::scoped_connection> mLastOwnerNameCacheConnection; // <edit/>
|
||||||
|
std::map<const LLUUID, boost::signals2::scoped_connection> mCreatorNameCacheConnection;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //LL_LLFLOATERINSPECT_H
|
#endif //LL_LLFLOATERINSPECT_H
|
||||||
|
|||||||
@@ -140,7 +140,8 @@ void LLToolComposite::handleDeselect()
|
|||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
LLToolCompInspect::LLToolCompInspect()
|
LLToolCompInspect::LLToolCompInspect()
|
||||||
: LLToolComposite(std::string("Inspect"))
|
: LLToolComposite(std::string("Inspect")),
|
||||||
|
mIsToolCameraActive(FALSE)
|
||||||
{
|
{
|
||||||
mSelectRect = new LLToolSelectRect(this);
|
mSelectRect = new LLToolSelectRect(this);
|
||||||
mDefault = mSelectRect;
|
mDefault = mSelectRect;
|
||||||
@@ -155,37 +156,49 @@ LLToolCompInspect::~LLToolCompInspect()
|
|||||||
|
|
||||||
BOOL LLToolCompInspect::handleMouseDown(S32 x, S32 y, MASK mask)
|
BOOL LLToolCompInspect::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||||
{
|
{
|
||||||
mMouseDown = TRUE;
|
BOOL handled = FALSE;
|
||||||
gViewerWindow->pickAsync(x, y, mask, pickCallback);
|
|
||||||
return TRUE;
|
if (mCur == LLToolCamera::getInstance())
|
||||||
|
{
|
||||||
|
handled = mCur->handleMouseDown(x, y, mask);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mMouseDown = TRUE;
|
||||||
|
gViewerWindow->pickAsync(x, y, mask, pickCallback);
|
||||||
|
handled = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL LLToolCompInspect::handleMouseUp(S32 x, S32 y, MASK mask)
|
||||||
|
{
|
||||||
|
BOOL handled = LLToolComposite::handleMouseUp(x, y, mask);
|
||||||
|
mIsToolCameraActive = getCurrentTool() == LLToolCamera::getInstance();
|
||||||
|
return handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLToolCompInspect::pickCallback(const LLPickInfo& pick_info)
|
void LLToolCompInspect::pickCallback(const LLPickInfo& pick_info)
|
||||||
{
|
{
|
||||||
LLViewerObject* hit_obj = pick_info.getObject();
|
LLViewerObject* hit_obj = pick_info.getObject();
|
||||||
|
LLToolCompInspect* tool_inspectp = LLToolCompInspect::getInstance();
|
||||||
|
|
||||||
if (!LLToolCompInspect::getInstance()->mMouseDown)
|
if (!tool_inspectp->mMouseDown)
|
||||||
{
|
{
|
||||||
// fast click on object, but mouse is already up...just do select
|
// fast click on object, but mouse is already up...just do select
|
||||||
LLToolCompInspect::getInstance()->mSelectRect->handleObjectSelection(pick_info, gSavedSettings.getBOOL("EditLinkedParts"), FALSE);
|
tool_inspectp->mSelectRect->handleObjectSelection(pick_info, gSavedSettings.getBOOL("EditLinkedParts"), FALSE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( hit_obj )
|
LLSelectMgr* mgr_selectp = LLSelectMgr::getInstance();
|
||||||
{
|
if (hit_obj && mgr_selectp->getSelection()->getObjectCount()) {
|
||||||
if (LLSelectMgr::getInstance()->getSelection()->getObjectCount())
|
LLEditMenuHandler::gEditMenuHandler = mgr_selectp;
|
||||||
{
|
}
|
||||||
LLEditMenuHandler::gEditMenuHandler = LLSelectMgr::getInstance();
|
|
||||||
}
|
|
||||||
LLToolCompInspect::getInstance()->setCurrentTool( LLToolCompInspect::getInstance()->mSelectRect );
|
|
||||||
LLToolCompInspect::getInstance()->mSelectRect->handlePick( pick_info );
|
|
||||||
|
|
||||||
}
|
tool_inspectp->setCurrentTool( tool_inspectp->mSelectRect );
|
||||||
else
|
tool_inspectp->mIsToolCameraActive = FALSE;
|
||||||
{
|
tool_inspectp->mSelectRect->handlePick( pick_info );
|
||||||
LLToolCompInspect::getInstance()->setCurrentTool( LLToolCompInspect::getInstance()->mSelectRect );
|
|
||||||
LLToolCompInspect::getInstance()->mSelectRect->handlePick( pick_info );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL LLToolCompInspect::handleDoubleClick(S32 x, S32 y, MASK mask)
|
BOOL LLToolCompInspect::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||||
@@ -193,6 +206,39 @@ BOOL LLToolCompInspect::handleDoubleClick(S32 x, S32 y, MASK mask)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL LLToolCompInspect::handleKey(KEY key, MASK mask)
|
||||||
|
{
|
||||||
|
BOOL handled = FALSE;
|
||||||
|
|
||||||
|
if(KEY_ALT == key)
|
||||||
|
{
|
||||||
|
setCurrentTool(LLToolCamera::getInstance());
|
||||||
|
mIsToolCameraActive = TRUE;
|
||||||
|
handled = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
handled = LLToolComposite::handleKey(key, mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
return handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLToolCompInspect::onMouseCaptureLost()
|
||||||
|
{
|
||||||
|
LLToolComposite::onMouseCaptureLost();
|
||||||
|
mIsToolCameraActive = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLToolCompInspect::keyUp(KEY key, MASK mask)
|
||||||
|
{
|
||||||
|
if (KEY_ALT == key && mCur == LLToolCamera::getInstance())
|
||||||
|
{
|
||||||
|
setCurrentTool(mDefault);
|
||||||
|
mIsToolCameraActive = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
// LLToolCompTranslate
|
// LLToolCompTranslate
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -109,9 +109,18 @@ public:
|
|||||||
|
|
||||||
// Overridden from LLToolComposite
|
// Overridden from LLToolComposite
|
||||||
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
|
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
|
||||||
|
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
|
||||||
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||||
|
virtual BOOL handleKey(KEY key, MASK mask);
|
||||||
|
virtual void onMouseCaptureLost();
|
||||||
|
void keyUp(KEY key, MASK mask);
|
||||||
|
|
||||||
static void pickCallback(const LLPickInfo& pick_info);
|
static void pickCallback(const LLPickInfo& pick_info);
|
||||||
|
|
||||||
|
BOOL isToolCameraActive() const { return mIsToolCameraActive; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
BOOL mIsToolCameraActive;
|
||||||
};
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "llfirstuse.h"
|
#include "llfirstuse.h"
|
||||||
// tools and manipulators
|
// tools and manipulators
|
||||||
|
#include "llfloaterinspect.h"
|
||||||
#include "lltool.h"
|
#include "lltool.h"
|
||||||
#include "llmanipscale.h"
|
#include "llmanipscale.h"
|
||||||
#include "llselectmgr.h"
|
#include "llselectmgr.h"
|
||||||
@@ -92,6 +93,8 @@ LLToolMgr::LLToolMgr()
|
|||||||
// gLandToolset = new LLToolset("Land");
|
// gLandToolset = new LLToolset("Land");
|
||||||
gMouselookToolset = new LLToolset("MouseLook");
|
gMouselookToolset = new LLToolset("MouseLook");
|
||||||
gFaceEditToolset = new LLToolset("FaceEdit");
|
gFaceEditToolset = new LLToolset("FaceEdit");
|
||||||
|
gMouselookToolset->setShowFloaterTools(false);
|
||||||
|
gFaceEditToolset->setShowFloaterTools(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLToolMgr::initTools()
|
void LLToolMgr::initTools()
|
||||||
@@ -221,7 +224,19 @@ LLTool* LLToolMgr::getCurrentTool()
|
|||||||
}
|
}
|
||||||
if (cur_tool)
|
if (cur_tool)
|
||||||
{
|
{
|
||||||
cur_tool->handleSelect();
|
if (LLToolCompInspect::getInstance()->isToolCameraActive()
|
||||||
|
&& prev_tool == LLToolCamera::getInstance()
|
||||||
|
&& cur_tool == LLToolPie::getInstance())
|
||||||
|
{
|
||||||
|
if (LLFloaterInspect::instanceVisible())
|
||||||
|
{
|
||||||
|
setTransientTool(LLToolCompInspect::getInstance());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cur_tool->handleSelect();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ protected:
|
|||||||
class LLToolset
|
class LLToolset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LLToolset(const char *name) : mSelectedTool(NULL), mName(name) {}
|
LLToolset(const char* name) : mSelectedTool(NULL), mName(name), mIsShowFloaterTools(true) {}
|
||||||
|
|
||||||
LLTool* getSelectedTool() { return mSelectedTool; }
|
LLTool* getSelectedTool() { return mSelectedTool; }
|
||||||
|
|
||||||
@@ -111,12 +111,16 @@ public:
|
|||||||
|
|
||||||
BOOL isToolSelected( S32 index );
|
BOOL isToolSelected( S32 index );
|
||||||
|
|
||||||
|
void setShowFloaterTools(bool pShowFloaterTools) {mIsShowFloaterTools = pShowFloaterTools;};
|
||||||
|
bool isShowFloaterTools() const {return mIsShowFloaterTools;};
|
||||||
const char* getName() const {return mName;}
|
const char* getName() const {return mName;}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const char* mName;
|
const char* mName;
|
||||||
LLTool* mSelectedTool;
|
LLTool* mSelectedTool;
|
||||||
typedef std::vector<LLTool*> tool_list_t;
|
typedef std::vector<LLTool*> tool_list_t;
|
||||||
tool_list_t mToolList;
|
tool_list_t mToolList;
|
||||||
|
bool mIsShowFloaterTools;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Globals
|
// Globals
|
||||||
|
|||||||
@@ -1373,6 +1373,13 @@ BOOL LLViewerWindow::handleTranslatedKeyUp(KEY key, MASK mask)
|
|||||||
// Let the voice chat code check for its PTT key. Note that this never affects event processing.
|
// Let the voice chat code check for its PTT key. Note that this never affects event processing.
|
||||||
LLVoiceClient::getInstance()->keyUp(key, mask);
|
LLVoiceClient::getInstance()->keyUp(key, mask);
|
||||||
|
|
||||||
|
// Let the inspect tool code check for ALT key to set LLToolSelectRect active instead LLToolCamera
|
||||||
|
LLToolCompInspect * tool_inspectp = LLToolCompInspect::getInstance();
|
||||||
|
if (LLToolMgr::getInstance()->getCurrentTool() == tool_inspectp)
|
||||||
|
{
|
||||||
|
tool_inspectp->keyUp(key, mask);
|
||||||
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1380,7 +1387,7 @@ BOOL LLViewerWindow::handleTranslatedKeyUp(KEY key, MASK mask)
|
|||||||
void LLViewerWindow::handleScanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level)
|
void LLViewerWindow::handleScanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level)
|
||||||
{
|
{
|
||||||
LLViewerJoystick::getInstance()->setCameraNeedsUpdate(true);
|
LLViewerJoystick::getInstance()->setCameraNeedsUpdate(true);
|
||||||
return gViewerKeyboard.scanKey(key, key_down, key_up, key_level);
|
gViewerKeyboard.scanKey(key, key_down, key_up, key_level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1665,7 +1672,7 @@ LLViewerWindow::LLViewerWindow(
|
|||||||
{
|
{
|
||||||
LLSplashScreen::update(LLTrans::getString("StartupRequireDriverUpdate"));
|
LLSplashScreen::update(LLTrans::getString("StartupRequireDriverUpdate"));
|
||||||
|
|
||||||
LL_WARNS("Window") << "Failed to create window, to be shutting Down, be sure your graphics driver is updated." << llendl ;
|
LL_WARNS("Window") << "Failed to create window, to be shutting Down, be sure your graphics driver is updated." << LL_ENDL ;
|
||||||
|
|
||||||
ms_sleep(5000) ; //wait for 5 seconds.
|
ms_sleep(5000) ; //wait for 5 seconds.
|
||||||
|
|
||||||
@@ -3366,10 +3373,8 @@ void LLViewerWindow::updateLayout()
|
|||||||
|| (tool != LLToolPie::getInstance() // not default tool
|
|| (tool != LLToolPie::getInstance() // not default tool
|
||||||
&& tool != LLToolCompGun::getInstance() // not coming out of mouselook
|
&& tool != LLToolCompGun::getInstance() // not coming out of mouselook
|
||||||
&& !suppress_toolbox // not override in third person
|
&& !suppress_toolbox // not override in third person
|
||||||
&& LLToolMgr::getInstance()->getCurrentToolset() != gFaceEditToolset // not special mode
|
&& LLToolMgr::getInstance()->getCurrentToolset()->isShowFloaterTools()
|
||||||
&& LLToolMgr::getInstance()->getCurrentToolset() != gMouselookToolset
|
|
||||||
&& (!captor || dynamic_cast<LLView*>(captor) != NULL))) // not dragging
|
&& (!captor || dynamic_cast<LLView*>(captor) != NULL))) // not dragging
|
||||||
|
|
||||||
{
|
{
|
||||||
// Force floater tools to be visible (unless minimized)
|
// Force floater tools to be visible (unless minimized)
|
||||||
if (!gFloaterTools->getVisible())
|
if (!gFloaterTools->getVisible())
|
||||||
@@ -3406,7 +3411,7 @@ void LLViewerWindow::updateLayout()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update rectangles for the various toolbars
|
// Update rectangles for the various toolbars
|
||||||
if (gOverlayBar && gNotifyBoxView && gConsole && gToolBar && gHUDView)
|
if (gOverlayBar && gNotifyBoxView && gToolBar && gHUDView)
|
||||||
{
|
{
|
||||||
LLRect bar_rect(-1, STATUS_BAR_HEIGHT, getWindowWidth()+1, -1);
|
LLRect bar_rect(-1, STATUS_BAR_HEIGHT, getWindowWidth()+1, -1);
|
||||||
|
|
||||||
@@ -3456,10 +3461,13 @@ void LLViewerWindow::updateLayout()
|
|||||||
{
|
{
|
||||||
gFloaterView->setSnapOffsetBottom(0);
|
gFloaterView->setSnapOffsetBottom(0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Always update console
|
// Always update console
|
||||||
|
if (gConsole)
|
||||||
|
{
|
||||||
LLRect console_rect = getChatConsoleRect();
|
LLRect console_rect = getChatConsoleRect();
|
||||||
console_rect.mBottom = gHUDView->getRect().mBottom + getChatConsoleBottomPad();
|
if (gHUDView) console_rect.mBottom = gHUDView->getRect().mBottom + getChatConsoleBottomPad();
|
||||||
gConsole->reshape(console_rect.getWidth(), console_rect.getHeight());
|
gConsole->reshape(console_rect.getWidth(), console_rect.getHeight());
|
||||||
gConsole->setRect(console_rect);
|
gConsole->setRect(console_rect);
|
||||||
}
|
}
|
||||||
@@ -3559,6 +3567,7 @@ void LLViewerWindow::updateKeyboardFocus()
|
|||||||
cur_focus->focusFirstItem();
|
cur_focus->focusFirstItem();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// last ditch force of edit menu to selection manager
|
// last ditch force of edit menu to selection manager
|
||||||
if (LLEditMenuHandler::gEditMenuHandler == NULL && LLSelectMgr::getInstance()->getSelection()->getObjectCount())
|
if (LLEditMenuHandler::gEditMenuHandler == NULL && LLSelectMgr::getInstance()->getSelection()->getObjectCount())
|
||||||
{
|
{
|
||||||
@@ -3597,6 +3606,7 @@ void LLViewerWindow::saveLastMouse(const LLCoordGL &point)
|
|||||||
{
|
{
|
||||||
// Store last mouse location.
|
// Store last mouse location.
|
||||||
// If mouse leaves window, pretend last point was on edge of window
|
// If mouse leaves window, pretend last point was on edge of window
|
||||||
|
|
||||||
if (point.mX < 0)
|
if (point.mX < 0)
|
||||||
{
|
{
|
||||||
mCurrentMousePoint.mX = 0;
|
mCurrentMousePoint.mX = 0;
|
||||||
@@ -3886,6 +3896,8 @@ void LLViewerWindow::schedulePick(LLPickInfo& pick_info)
|
|||||||
mPicks.push_back(pick_info);
|
mPicks.push_back(pick_info);
|
||||||
|
|
||||||
// delay further event processing until we receive results of pick
|
// delay further event processing until we receive results of pick
|
||||||
|
// only do this for async picks so that handleMouseUp won't be called
|
||||||
|
// until the pick triggered in handleMouseDown has been processed, for example
|
||||||
mWindow->delayInputProcessing();
|
mWindow->delayInputProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3963,6 +3975,7 @@ LLHUDIcon* LLViewerWindow::cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 dep
|
|||||||
}
|
}
|
||||||
|
|
||||||
// world coordinates of mouse
|
// world coordinates of mouse
|
||||||
|
// VECTORIZE THIS
|
||||||
LLVector3 mouse_direction_global = mouseDirectionGlobal(x,y);
|
LLVector3 mouse_direction_global = mouseDirectionGlobal(x,y);
|
||||||
LLVector3 mouse_point_global = LLViewerCamera::getInstance()->getOrigin();
|
LLVector3 mouse_point_global = LLViewerCamera::getInstance()->getOrigin();
|
||||||
LLVector3 mouse_world_start = mouse_point_global;
|
LLVector3 mouse_world_start = mouse_point_global;
|
||||||
@@ -4258,7 +4271,7 @@ BOOL LLViewerWindow::mousePointOnLandGlobal(const S32 x, const S32 y, LLVector3d
|
|||||||
S32 grids_per_edge = (S32) regionp->getLand().mGridsPerEdge;
|
S32 grids_per_edge = (S32) regionp->getLand().mGridsPerEdge;
|
||||||
if ((i >= grids_per_edge) || (j >= grids_per_edge))
|
if ((i >= grids_per_edge) || (j >= grids_per_edge))
|
||||||
{
|
{
|
||||||
//llinfos << "LLViewerWindow::mousePointOnLand probe_point is out of region" << llendl;
|
//LL_INFOS() << "LLViewerWindow::mousePointOnLand probe_point is out of region" << LL_ENDL;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4305,7 +4318,7 @@ BOOL LLViewerWindow::mousePointOnLandGlobal(const S32 x, const S32 y, LLVector3d
|
|||||||
j = (S32) (local_probe_point.mV[VY]/regionp->getLand().getMetersPerGrid());
|
j = (S32) (local_probe_point.mV[VY]/regionp->getLand().getMetersPerGrid());
|
||||||
if ((i >= regionp->getLand().mGridsPerEdge) || (j >= regionp->getLand().mGridsPerEdge))
|
if ((i >= regionp->getLand().mGridsPerEdge) || (j >= regionp->getLand().mGridsPerEdge))
|
||||||
{
|
{
|
||||||
// llinfos << "LLViewerWindow::mousePointOnLand probe_point is out of region" << llendl;
|
// LL_INFOS() << "LLViewerWindow::mousePointOnLand probe_point is out of region" << LL_ENDL;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
land_z = regionp->getLand().mSurfaceZ[ i + j * (regionp->getLand().mGridsPerEdge) ];
|
land_z = regionp->getLand().mSurfaceZ[ i + j * (regionp->getLand().mGridsPerEdge) ];
|
||||||
@@ -4313,7 +4326,7 @@ BOOL LLViewerWindow::mousePointOnLandGlobal(const S32 x, const S32 y, LLVector3d
|
|||||||
|
|
||||||
land_z = regionp->getLand().resolveHeightRegion(probe_point_region);
|
land_z = regionp->getLand().resolveHeightRegion(probe_point_region);
|
||||||
|
|
||||||
//llinfos << "mousePointOnLand refine z " << land_z << llendl;
|
//LL_INFOS() << "mousePointOnLand refine z " << land_z << LL_ENDL;
|
||||||
|
|
||||||
if (probe_point_region.mV[VZ] < land_z)
|
if (probe_point_region.mV[VZ] < land_z)
|
||||||
{
|
{
|
||||||
@@ -4739,7 +4752,9 @@ bool LLViewerWindow::rawRawSnapshot(LLImageRaw *raw,
|
|||||||
S32 original_width = 0;
|
S32 original_width = 0;
|
||||||
S32 original_height = 0;
|
S32 original_height = 0;
|
||||||
bool reset_deferred = false;
|
bool reset_deferred = false;
|
||||||
|
|
||||||
LLRenderTarget scratch_space;
|
LLRenderTarget scratch_space;
|
||||||
|
|
||||||
if ((image_width > window_width || image_height > window_height) && LLPipeline::sRenderDeferred && !show_ui)
|
if ((image_width > window_width || image_height > window_height) && LLPipeline::sRenderDeferred && !show_ui)
|
||||||
{
|
{
|
||||||
if (scratch_space.allocate(image_width, image_height, GL_RGBA, true, true))
|
if (scratch_space.allocate(image_width, image_height, GL_RGBA, true, true))
|
||||||
@@ -4955,6 +4970,7 @@ bool LLViewerWindow::rawRawSnapshot(LLImageRaw *raw,
|
|||||||
LLHUDObject::reshapeAll();
|
LLHUDObject::reshapeAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
setCursor(UI_CURSOR_ARROW);
|
setCursor(UI_CURSOR_ARROW);
|
||||||
|
|
||||||
if (do_rebuild)
|
if (do_rebuild)
|
||||||
|
|||||||
Reference in New Issue
Block a user