STORM-149 FIXED Disabled 'Cut' in My Landmarks context menu when selected items contain a folder.
Changed some of context menu actions availability checks to be applied to all selected items instead of only the last one.meow-7.2.2
parent
e44011c3be
commit
ed31b2060c
|
|
@ -965,12 +965,32 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
|
|||
|| "expand" == command_name
|
||||
)
|
||||
{
|
||||
return canSelectedBeModified(command_name);
|
||||
if (!root_folder_view) return false;
|
||||
|
||||
std::set<LLUUID> selected_uuids = root_folder_view->getSelectionList();
|
||||
|
||||
// Allow to execute the command only if it can be applied to all selected items.
|
||||
for (std::set<LLUUID>::const_iterator iter = selected_uuids.begin(); iter != selected_uuids.end(); ++iter)
|
||||
{
|
||||
LLFolderViewItem* item = root_folder_view->getItemByID(*iter);
|
||||
|
||||
// If no item is found it might be a folder id.
|
||||
if (!item)
|
||||
{
|
||||
item = root_folder_view->getFolderByID(*iter);
|
||||
}
|
||||
if (!item) return false;
|
||||
|
||||
if (!canItemBeModified(command_name, item)) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else if ( "teleport" == command_name
|
||||
|| "more_info" == command_name
|
||||
|| "show_on_map" == command_name
|
||||
|| "copy_slurl" == command_name
|
||||
|| "rename" == command_name
|
||||
)
|
||||
{
|
||||
// disable some commands for multi-selection. EXT-1757
|
||||
|
|
@ -994,13 +1014,16 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
|
|||
// Disable "Show on Map" if landmark loading is in progress.
|
||||
return !gLandmarkList.isAssetInLoadedCallbackMap(asset_uuid);
|
||||
}
|
||||
else if ("rename" == command_name)
|
||||
{
|
||||
LLFolderViewItem* selected_item = getCurSelectedItem();
|
||||
if (!selected_item) return false;
|
||||
|
||||
return canItemBeModified(command_name, selected_item);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else if ("rename" == command_name)
|
||||
{
|
||||
return root_folder_view && root_folder_view->getSelectedCount() == 1 && canSelectedBeModified(command_name);
|
||||
}
|
||||
else if("category" == command_name)
|
||||
{
|
||||
// we can add folder only in Landmarks Accordion
|
||||
|
|
@ -1065,12 +1088,11 @@ Rules:
|
|||
4. We can not paste folders from Clipboard (processed by LLFolderView::canPaste())
|
||||
5. Check LLFolderView/Inventory Bridges rules
|
||||
*/
|
||||
bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) const
|
||||
bool LLLandmarksPanel::canItemBeModified(const std::string& command_name, LLFolderViewItem* item) const
|
||||
{
|
||||
// validate own rules first
|
||||
|
||||
LLFolderViewItem* selected = getCurSelectedItem();
|
||||
if (!selected) return false;
|
||||
if (!item) return false;
|
||||
|
||||
// nothing can be modified in Library
|
||||
if (mLibraryInventoryPanel == mCurrentSelectedList) return false;
|
||||
|
|
@ -1078,7 +1100,7 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co
|
|||
bool can_be_modified = false;
|
||||
|
||||
// landmarks can be modified in any other accordion...
|
||||
if (isLandmarkSelected())
|
||||
if (item->getListener()->getInventoryType() == LLInventoryType::IT_LANDMARK)
|
||||
{
|
||||
can_be_modified = true;
|
||||
|
||||
|
|
@ -1107,16 +1129,16 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co
|
|||
}
|
||||
else if ("collapse" == command_name)
|
||||
{
|
||||
return selected->isOpen();
|
||||
return item->isOpen();
|
||||
}
|
||||
else if ("expand" == command_name)
|
||||
{
|
||||
return !selected->isOpen();
|
||||
return !item->isOpen();
|
||||
}
|
||||
|
||||
if (can_be_modified)
|
||||
{
|
||||
LLFolderViewEventListener* listenerp = selected->getListener();
|
||||
LLFolderViewEventListener* listenerp = item->getListener();
|
||||
|
||||
if ("cut" == command_name)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -127,12 +127,12 @@ private:
|
|||
void onCustomAction(const LLSD& command_name);
|
||||
|
||||
/**
|
||||
* Determines if selected item can be modified via context/gear menu.
|
||||
* Determines if an item can be modified via context/gear menu.
|
||||
*
|
||||
* It validates Places Landmarks rules first. And then LLFolderView permissions.
|
||||
* For now it checks cut/rename/delete/paste actions.
|
||||
*/
|
||||
bool canSelectedBeModified(const std::string& command_name) const;
|
||||
bool canItemBeModified(const std::string& command_name, LLFolderViewItem* item) const;
|
||||
void onPickPanelExit( LLPanelPickEdit* pick_panel, LLView* owner, const LLSD& params);
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue