SL-14461 Parent set to no click action should not override child's 'touch' action.

meow-7.2.2
Andrey Kleshchev 2020-12-11 23:07:49 +02:00
parent 83a9d09b41
commit 9dd9af129b
1 changed files with 12 additions and 7 deletions

View File

@ -465,8 +465,9 @@ BOOL LLToolPie::useClickAction(MASK mask,
&& object
&& !object->isAttachment()
&& LLPrimitive::isPrimitive(object->getPCode())
&& (object->getClickAction()
|| parent->getClickAction());
// useClickAction does not handle Touch (0) or Disabled action
&& ((object->getClickAction() && object->getClickAction() != CLICK_ACTION_DISABLED)
|| (parent->getClickAction() && parent->getClickAction() != CLICK_ACTION_DISABLED));
}
@ -480,13 +481,17 @@ U8 final_click_action(LLViewerObject* obj)
if (obj->getClickAction()
|| (parent && parent->getClickAction()))
{
if (obj->getClickAction())
U8 object_action = obj->getClickAction();
U8 parent_action = parent ? parent->getClickAction() : CLICK_ACTION_TOUCH;
if (parent_action == CLICK_ACTION_DISABLED || object_action)
{
click_action = obj->getClickAction();
// CLICK_ACTION_DISABLED ("None" in UI) is intended for child action to
// override parents action when assigned to parent or to child
click_action = object_action;
}
else if (parent && parent->getClickAction())
else if (parent_action)
{
click_action = parent->getClickAction();
click_action = parent_action;
}
}
return click_action;
@ -692,7 +697,7 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
}
else if ((!object || !object->isAttachment() || object->getClickAction() != CLICK_ACTION_DISABLED)
&& ((object && object->flagHandleTouch()) || (parent && parent->flagHandleTouch()))
&& (object && !object->isAvatar()))
&& (!object || !object->isAvatar()))
{
show_highlight = true;
gViewerWindow->setCursor(UI_CURSOR_HAND);