EXT-8033 FIXED Selecting multiple inventory items can give incorrect right-click context menus
EXT-8093 FIXED No "open" or "properties" items for gestures Re-added open/properties to gestures Fixed right-click inventory selection so that it does something logical & consistent for multiple items. Had to add a "getLastVisible" to LLView to support this.meow-7.2.2
parent
9139238500
commit
3ce3df5643
|
|
@ -310,7 +310,8 @@ public:
|
|||
|
||||
void pushVisible(BOOL visible) { mLastVisible = mVisible; setVisible(visible); }
|
||||
void popVisible() { setVisible(mLastVisible); }
|
||||
|
||||
BOOL getLastVisible() const { return mLastVisible; }
|
||||
|
||||
LLHandle<LLView> getHandle() { mHandle.bind(this); return mHandle; }
|
||||
|
||||
U32 getFollows() const { return mReshapeFlags; }
|
||||
|
|
|
|||
|
|
@ -1868,7 +1868,8 @@ BOOL LLFolderView::handleRightMouseDown( S32 x, S32 y, MASK mask )
|
|||
LLView::child_list_t::const_iterator menu_itor;
|
||||
for (menu_itor = list->begin(); menu_itor != list->end(); ++menu_itor)
|
||||
{
|
||||
(*menu_itor)->setVisible(TRUE);
|
||||
(*menu_itor)->setVisible(FALSE);
|
||||
(*menu_itor)->pushVisible(TRUE);
|
||||
(*menu_itor)->setEnabled(TRUE);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -452,13 +452,15 @@ void hide_context_entries(LLMenuGL& menu,
|
|||
// if the first element is a separator, it will not be shown.
|
||||
BOOL is_previous_entry_separator = TRUE;
|
||||
|
||||
LLView::child_list_t::const_iterator itor;
|
||||
for (itor = list->begin(); itor != list->end(); ++itor)
|
||||
for (LLView::child_list_t::const_iterator itor = list->begin();
|
||||
itor != list->end();
|
||||
++itor)
|
||||
{
|
||||
std::string name = (*itor)->getName();
|
||||
LLView *menu_item = (*itor);
|
||||
std::string name = menu_item->getName();
|
||||
|
||||
// descend into split menus:
|
||||
LLMenuItemBranchGL* branchp = dynamic_cast<LLMenuItemBranchGL*>(*itor);
|
||||
LLMenuItemBranchGL* branchp = dynamic_cast<LLMenuItemBranchGL*>(menu_item);
|
||||
if ((name == "More") && branchp)
|
||||
{
|
||||
hide_context_entries(*branchp->getBranch(), entries_to_show, disabled_entries);
|
||||
|
|
@ -479,7 +481,7 @@ void hide_context_entries(LLMenuGL& menu,
|
|||
// between two separators).
|
||||
if (found)
|
||||
{
|
||||
const BOOL is_entry_separator = (dynamic_cast<LLMenuItemSeparatorGL *>(*itor) != NULL);
|
||||
const BOOL is_entry_separator = (dynamic_cast<LLMenuItemSeparatorGL *>(menu_item) != NULL);
|
||||
if (is_entry_separator && is_previous_entry_separator)
|
||||
found = false;
|
||||
is_previous_entry_separator = is_entry_separator;
|
||||
|
|
@ -487,16 +489,23 @@ void hide_context_entries(LLMenuGL& menu,
|
|||
|
||||
if (!found)
|
||||
{
|
||||
(*itor)->setVisible(FALSE);
|
||||
if (!menu_item->getLastVisible())
|
||||
{
|
||||
menu_item->setVisible(FALSE);
|
||||
}
|
||||
menu_item->setEnabled(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
(*itor)->setVisible(TRUE);
|
||||
menu_item->setVisible(TRUE);
|
||||
// A bit of a hack so we can remember that some UI element explicitly set this to be visible
|
||||
// so that some other UI element from multi-select doesn't later set this invisible.
|
||||
menu_item->pushVisible(TRUE);
|
||||
for (itor2 = disabled_entries.begin(); itor2 != disabled_entries.end(); ++itor2)
|
||||
{
|
||||
if (*itor2 == name)
|
||||
{
|
||||
(*itor)->setEnabled(FALSE);
|
||||
menu_item->setEnabled(FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3730,6 +3739,9 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
disabled_items.push_back(std::string("Share"));
|
||||
}
|
||||
|
||||
addOpenRightClickMenuOption(items);
|
||||
items.push_back(std::string("Properties"));
|
||||
|
||||
getClipboardEntries(true, items, disabled_items, flags);
|
||||
|
||||
items.push_back(std::string("Gesture Separator"));
|
||||
|
|
@ -4379,7 +4391,6 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
{
|
||||
can_open = FALSE;
|
||||
}
|
||||
|
||||
items.push_back(std::string("Share"));
|
||||
if (!canShare())
|
||||
{
|
||||
|
|
@ -4390,6 +4401,11 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
{
|
||||
addOpenRightClickMenuOption(items);
|
||||
}
|
||||
else
|
||||
{
|
||||
disabled_items.push_back(std::string("Open"));
|
||||
disabled_items.push_back(std::string("Open Original"));
|
||||
}
|
||||
|
||||
items.push_back(std::string("Properties"));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue