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.
|
||||
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
|
||||
bool fRlvFilterOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idOwner != gAgent.getID()) &&
|
||||
(!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]
|
||||
}
|
||||
else
|
||||
{
|
||||
owner_name = LLTrans::getString("RetrievingData");
|
||||
LLAvatarNameCache::get(idOwner, boost::bind(&LLFloaterInspect::dirty, this));
|
||||
}
|
||||
|
||||
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));
|
||||
if (mOwnerNameCacheConnection.find(idOwner) == mOwnerNameCacheConnection.end())
|
||||
mOwnerNameCacheConnection.insert(std::make_pair(idOwner, LLAvatarNameCache::get(idOwner, boost::bind(&LLFloaterInspect::onGetOwnerNameCallback, this, _1))));
|
||||
}
|
||||
|
||||
// <edit>
|
||||
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
|
||||
LLAvatarNameCache::get(idLastOwner, &av_name);
|
||||
bool fRlvFilterLastOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (idLastOwner != gAgent.getID()) &&
|
||||
( (obj->mPermissions->getOwner() == idLastOwner) || (RlvUtil::isNearbyAgent(idLastOwner)) );
|
||||
last_owner_name = (!fRlvFilterLastOwner) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
|
||||
bool fRlvFilterLastOwner = gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) && idLastOwner != gAgent.getID() &&
|
||||
(obj->mPermissions->getOwner() == idLastOwner || RlvUtil::isNearbyAgent(idLastOwner));
|
||||
last_owner_name = (!fRlvFilterLastOwner) ? av_name.getNSName() : RlvStrings::getAnonym(av_name);
|
||||
// [/RLVa:LF]
|
||||
}
|
||||
else
|
||||
{
|
||||
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>
|
||||
|
||||
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["columns"][0]["column"] = "object_name";
|
||||
row["columns"][0]["type"] = "text";
|
||||
@@ -321,8 +324,8 @@ void LLFloaterInspect::refresh()
|
||||
row["columns"][5]["value"] = llformat("%d",obj->getObject()->getNumVertices());
|
||||
// inventory silliness
|
||||
S32 scripts,total_inv;
|
||||
std::map<LLUUID,std::pair<S32,S32> >::iterator itr = mInventoryNums.find(obj->getObject()->getID());
|
||||
if(itr != mInventoryNums.end())
|
||||
std::map<LLUUID,std::pair<U32,U32> >::iterator itr = mInventoryNums.find(obj->getObject()->getID());
|
||||
if (itr != mInventoryNums.end())
|
||||
{
|
||||
scripts = itr->second.first;
|
||||
total_inv = itr->second.second;
|
||||
@@ -331,10 +334,10 @@ void LLFloaterInspect::refresh()
|
||||
{
|
||||
scripts = 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());
|
||||
registerVOInventoryListener(obj->getObject(),NULL);
|
||||
registerVOInventoryListener(obj->getObject(), NULL);
|
||||
requestVOInventory();
|
||||
}
|
||||
}
|
||||
@@ -365,23 +368,19 @@ void LLFloaterInspect::refresh()
|
||||
}
|
||||
|
||||
// <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());
|
||||
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();
|
||||
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;
|
||||
}
|
||||
}
|
||||
mInventoryNums[viewer_object->getID()] = std::make_pair(scripts,inv->size());
|
||||
mQueue.erase(iter);
|
||||
mDirty = TRUE;
|
||||
setDirty();
|
||||
}
|
||||
}
|
||||
// </edit>
|
||||
@@ -401,6 +400,24 @@ void LLFloaterInspect::dirty()
|
||||
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()
|
||||
{
|
||||
if (mDirty)
|
||||
|
||||
@@ -72,14 +72,21 @@ protected:
|
||||
// </edit>
|
||||
|
||||
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);
|
||||
|
||||
LLSafeHandle<LLObjectSelection> mObjectSelection;
|
||||
// <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;
|
||||
// </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
|
||||
|
||||
@@ -140,7 +140,8 @@ void LLToolComposite::handleDeselect()
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
LLToolCompInspect::LLToolCompInspect()
|
||||
: LLToolComposite(std::string("Inspect"))
|
||||
: LLToolComposite(std::string("Inspect")),
|
||||
mIsToolCameraActive(FALSE)
|
||||
{
|
||||
mSelectRect = new LLToolSelectRect(this);
|
||||
mDefault = mSelectRect;
|
||||
@@ -155,37 +156,49 @@ LLToolCompInspect::~LLToolCompInspect()
|
||||
|
||||
BOOL LLToolCompInspect::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mMouseDown = TRUE;
|
||||
gViewerWindow->pickAsync(x, y, mask, pickCallback);
|
||||
return TRUE;
|
||||
BOOL handled = FALSE;
|
||||
|
||||
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)
|
||||
{
|
||||
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
|
||||
LLToolCompInspect::getInstance()->mSelectRect->handleObjectSelection(pick_info, gSavedSettings.getBOOL("EditLinkedParts"), FALSE);
|
||||
tool_inspectp->mSelectRect->handleObjectSelection(pick_info, gSavedSettings.getBOOL("EditLinkedParts"), FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
if( hit_obj )
|
||||
{
|
||||
if (LLSelectMgr::getInstance()->getSelection()->getObjectCount())
|
||||
{
|
||||
LLEditMenuHandler::gEditMenuHandler = LLSelectMgr::getInstance();
|
||||
}
|
||||
LLToolCompInspect::getInstance()->setCurrentTool( LLToolCompInspect::getInstance()->mSelectRect );
|
||||
LLToolCompInspect::getInstance()->mSelectRect->handlePick( pick_info );
|
||||
LLSelectMgr* mgr_selectp = LLSelectMgr::getInstance();
|
||||
if (hit_obj && mgr_selectp->getSelection()->getObjectCount()) {
|
||||
LLEditMenuHandler::gEditMenuHandler = mgr_selectp;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
LLToolCompInspect::getInstance()->setCurrentTool( LLToolCompInspect::getInstance()->mSelectRect );
|
||||
LLToolCompInspect::getInstance()->mSelectRect->handlePick( pick_info );
|
||||
}
|
||||
tool_inspectp->setCurrentTool( tool_inspectp->mSelectRect );
|
||||
tool_inspectp->mIsToolCameraActive = FALSE;
|
||||
tool_inspectp->mSelectRect->handlePick( pick_info );
|
||||
}
|
||||
|
||||
BOOL LLToolCompInspect::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
@@ -193,6 +206,39 @@ BOOL LLToolCompInspect::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
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
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -109,9 +109,18 @@ public:
|
||||
|
||||
// Overridden from LLToolComposite
|
||||
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 handleKey(KEY key, MASK mask);
|
||||
virtual void onMouseCaptureLost();
|
||||
void keyUp(KEY key, MASK mask);
|
||||
|
||||
static void pickCallback(const LLPickInfo& pick_info);
|
||||
|
||||
BOOL isToolCameraActive() const { return mIsToolCameraActive; }
|
||||
|
||||
private:
|
||||
BOOL mIsToolCameraActive;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
|
||||
#include "llfirstuse.h"
|
||||
// tools and manipulators
|
||||
#include "llfloaterinspect.h"
|
||||
#include "lltool.h"
|
||||
#include "llmanipscale.h"
|
||||
#include "llselectmgr.h"
|
||||
@@ -92,6 +93,8 @@ LLToolMgr::LLToolMgr()
|
||||
// gLandToolset = new LLToolset("Land");
|
||||
gMouselookToolset = new LLToolset("MouseLook");
|
||||
gFaceEditToolset = new LLToolset("FaceEdit");
|
||||
gMouselookToolset->setShowFloaterTools(false);
|
||||
gFaceEditToolset->setShowFloaterTools(false);
|
||||
}
|
||||
|
||||
void LLToolMgr::initTools()
|
||||
@@ -221,7 +224,19 @@ LLTool* LLToolMgr::getCurrentTool()
|
||||
}
|
||||
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
|
||||
{
|
||||
public:
|
||||
LLToolset(const char *name) : mSelectedTool(NULL), mName(name) {}
|
||||
LLToolset(const char* name) : mSelectedTool(NULL), mName(name), mIsShowFloaterTools(true) {}
|
||||
|
||||
LLTool* getSelectedTool() { return mSelectedTool; }
|
||||
|
||||
@@ -111,12 +111,16 @@ public:
|
||||
|
||||
BOOL isToolSelected( S32 index );
|
||||
|
||||
void setShowFloaterTools(bool pShowFloaterTools) {mIsShowFloaterTools = pShowFloaterTools;};
|
||||
bool isShowFloaterTools() const {return mIsShowFloaterTools;};
|
||||
const char* getName() const {return mName;}
|
||||
|
||||
protected:
|
||||
const char* mName;
|
||||
LLTool* mSelectedTool;
|
||||
typedef std::vector<LLTool*> tool_list_t;
|
||||
tool_list_t mToolList;
|
||||
bool mIsShowFloaterTools;
|
||||
};
|
||||
|
||||
// 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.
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
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"));
|
||||
|
||||
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.
|
||||
|
||||
@@ -3366,10 +3373,8 @@ void LLViewerWindow::updateLayout()
|
||||
|| (tool != LLToolPie::getInstance() // not default tool
|
||||
&& tool != LLToolCompGun::getInstance() // not coming out of mouselook
|
||||
&& !suppress_toolbox // not override in third person
|
||||
&& LLToolMgr::getInstance()->getCurrentToolset() != gFaceEditToolset // not special mode
|
||||
&& LLToolMgr::getInstance()->getCurrentToolset() != gMouselookToolset
|
||||
&& LLToolMgr::getInstance()->getCurrentToolset()->isShowFloaterTools()
|
||||
&& (!captor || dynamic_cast<LLView*>(captor) != NULL))) // not dragging
|
||||
|
||||
{
|
||||
// Force floater tools to be visible (unless minimized)
|
||||
if (!gFloaterTools->getVisible())
|
||||
@@ -3406,7 +3411,7 @@ void LLViewerWindow::updateLayout()
|
||||
}
|
||||
|
||||
// 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);
|
||||
|
||||
@@ -3456,10 +3461,13 @@ void LLViewerWindow::updateLayout()
|
||||
{
|
||||
gFloaterView->setSnapOffsetBottom(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Always update console
|
||||
// Always update console
|
||||
if (gConsole)
|
||||
{
|
||||
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->setRect(console_rect);
|
||||
}
|
||||
@@ -3559,6 +3567,7 @@ void LLViewerWindow::updateKeyboardFocus()
|
||||
cur_focus->focusFirstItem();
|
||||
}
|
||||
}
|
||||
|
||||
// last ditch force of edit menu to selection manager
|
||||
if (LLEditMenuHandler::gEditMenuHandler == NULL && LLSelectMgr::getInstance()->getSelection()->getObjectCount())
|
||||
{
|
||||
@@ -3597,6 +3606,7 @@ void LLViewerWindow::saveLastMouse(const LLCoordGL &point)
|
||||
{
|
||||
// Store last mouse location.
|
||||
// If mouse leaves window, pretend last point was on edge of window
|
||||
|
||||
if (point.mX < 0)
|
||||
{
|
||||
mCurrentMousePoint.mX = 0;
|
||||
@@ -3886,6 +3896,8 @@ void LLViewerWindow::schedulePick(LLPickInfo& pick_info)
|
||||
mPicks.push_back(pick_info);
|
||||
|
||||
// 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();
|
||||
}
|
||||
|
||||
@@ -3963,6 +3975,7 @@ LLHUDIcon* LLViewerWindow::cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 dep
|
||||
}
|
||||
|
||||
// world coordinates of mouse
|
||||
// VECTORIZE THIS
|
||||
LLVector3 mouse_direction_global = mouseDirectionGlobal(x,y);
|
||||
LLVector3 mouse_point_global = LLViewerCamera::getInstance()->getOrigin();
|
||||
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;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -4305,7 +4318,7 @@ BOOL LLViewerWindow::mousePointOnLandGlobal(const S32 x, const S32 y, LLVector3d
|
||||
j = (S32) (local_probe_point.mV[VY]/regionp->getLand().getMetersPerGrid());
|
||||
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;
|
||||
}
|
||||
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);
|
||||
|
||||
//llinfos << "mousePointOnLand refine z " << land_z << llendl;
|
||||
//LL_INFOS() << "mousePointOnLand refine z " << land_z << LL_ENDL;
|
||||
|
||||
if (probe_point_region.mV[VZ] < land_z)
|
||||
{
|
||||
@@ -4739,7 +4752,9 @@ bool LLViewerWindow::rawRawSnapshot(LLImageRaw *raw,
|
||||
S32 original_width = 0;
|
||||
S32 original_height = 0;
|
||||
bool reset_deferred = false;
|
||||
|
||||
LLRenderTarget scratch_space;
|
||||
|
||||
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))
|
||||
@@ -4955,6 +4970,7 @@ bool LLViewerWindow::rawRawSnapshot(LLImageRaw *raw,
|
||||
LLHUDObject::reshapeAll();
|
||||
}
|
||||
|
||||
|
||||
setCursor(UI_CURSOR_ARROW);
|
||||
|
||||
if (do_rebuild)
|
||||
|
||||
Reference in New Issue
Block a user