Merge
commit
fbffeea75b
|
|
@ -1112,7 +1112,7 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token,
|
|||
else if(LLStringOps::sMonthList.size() == 12 && code == "%B")
|
||||
{
|
||||
struct tm * gmt = gmtime (&loc_seconds);
|
||||
replacement = LLStringOps::sWeekDayList[gmt->tm_mon];
|
||||
replacement = LLStringOps::sMonthList[gmt->tm_mon];
|
||||
}
|
||||
else if( !LLStringOps::sDayFormat.empty() && code == "%d" )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -155,27 +155,11 @@ private:
|
|||
|
||||
void onTakeOff()
|
||||
{
|
||||
// Take off selected items if there are any
|
||||
if (mOutfitList->hasItemSelected())
|
||||
// Take off selected outfit.
|
||||
const LLUUID& selected_outfit_id = getSelectedOutfitID();
|
||||
if (selected_outfit_id.notNull())
|
||||
{
|
||||
uuid_vec_t selected_uuids;
|
||||
mOutfitList->getSelectedItemsUUIDs(selected_uuids);
|
||||
|
||||
for (uuid_vec_t::const_iterator it=selected_uuids.begin(); it != selected_uuids.end(); ++it)
|
||||
{
|
||||
if (get_is_item_worn(*it))
|
||||
{
|
||||
LLAppearanceMgr::instance().removeItemFromAvatar(*it);
|
||||
}
|
||||
}
|
||||
}
|
||||
else // or take off the whole selected outfit if no items specified.
|
||||
{
|
||||
const LLUUID& selected_outfit_id = getSelectedOutfitID();
|
||||
if (selected_outfit_id.notNull())
|
||||
{
|
||||
LLAppearanceMgr::instance().takeOffOutfit(selected_outfit_id);
|
||||
}
|
||||
LLAppearanceMgr::instance().takeOffOutfit(selected_outfit_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -568,8 +568,9 @@ void LLSideTray::toggleTabButton(LLSideTrayTab* tab)
|
|||
{
|
||||
LLButton* btn = it->second;
|
||||
bool new_state = !btn->getToggleState();
|
||||
btn->setToggleState(new_state);
|
||||
btn->setImageOverlay( new_state ? tab->mImageSelected : tab->mImage );
|
||||
btn->setToggleState(new_state);
|
||||
// Only highlight the tab if side tray is expanded (STORM-157).
|
||||
btn->setImageOverlay( new_state && !getCollapsed() ? tab->mImageSelected : tab->mImage );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue