summaryrefslogtreecommitdiff
path: root/indra/newview/lltoolpie.cpp
diff options
context:
space:
mode:
authorJosh Bell <josh@lindenlab.com>2007-03-31 01:41:19 +0000
committerJosh Bell <josh@lindenlab.com>2007-03-31 01:41:19 +0000
commitea8fb7238e6f12383ee4bc081475fa6235637581 (patch)
treef384da93c884353bef55cf887f6c86f2081db271 /indra/newview/lltoolpie.cpp
parentffc6680d956069625fc1fe5da133bdf7922cea83 (diff)
svn merge -r 59364:59813 svn+ssh://svn.lindenlab.com/svn/linden/branches/maintenance --> release
Diffstat (limited to 'indra/newview/lltoolpie.cpp')
-rw-r--r--indra/newview/lltoolpie.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 68d9ddbd54..f9511f72a5 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -44,6 +44,7 @@ LLToolPie *gToolPie = NULL;
LLViewerObject* LLToolPie::sClickActionObject = NULL;
LLHandle<LLObjectSelection> LLToolPie::sLeftClickSelection = NULL;
+U8 LLToolPie::sClickAction = 0;
extern void handle_buy(void*);
@@ -145,17 +146,17 @@ BOOL LLToolPie::pickAndShowMenu(S32 x, S32 y, MASK mask, BOOL always_show)
// If it's a left-click, and we have a special action, do it.
if (useClickAction(always_show, mask, object, parent))
{
- U8 click_action = 0;
+ sClickAction = 0;
if (object && object->getClickAction())
{
- click_action = object->getClickAction();
+ sClickAction = object->getClickAction();
}
else if (parent && parent->getClickAction())
{
- click_action = parent->getClickAction();
+ sClickAction = parent->getClickAction();
}
- switch(click_action)
+ switch(sClickAction)
{
case CLICK_ACTION_TOUCH:
default:
@@ -168,8 +169,9 @@ BOOL LLToolPie::pickAndShowMenu(S32 x, S32 y, MASK mask, BOOL always_show)
if (object && object->flagTakesMoney()
|| parent && parent->flagTakesMoney())
{
- sClickActionObject = parent;
- sLeftClickSelection = LLToolSelect::handleObjectSelection(parent, MASK_NONE, FALSE, TRUE);
+ // pay event goes to object actually clicked on
+ sClickActionObject = object;
+ sLeftClickSelection = LLToolSelect::handleObjectSelection(object, MASK_NONE, FALSE, TRUE);
return TRUE;
}
break;
@@ -398,13 +400,12 @@ void LLToolPie::selectionPropertiesReceived()
if (!sLeftClickSelection->isEmpty())
{
- LLViewerObject* root = sLeftClickSelection->getFirstRootObject();
+ LLViewerObject* selected_object = sLeftClickSelection->getPrimaryObject();
// since we don't currently have a way to lock a selection, it could have changed
// after we initially clicked on the object
- if (root == sClickActionObject)
+ if (selected_object == sClickActionObject)
{
- U8 action = root->getClickAction();
- switch (action)
+ switch (sClickAction)
{
case CLICK_ACTION_BUY:
handle_buy(NULL);
@@ -422,6 +423,7 @@ void LLToolPie::selectionPropertiesReceived()
}
sLeftClickSelection = NULL;
sClickActionObject = NULL;
+ sClickAction = 0;
}
BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)