summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llfolderviewmodelinventory.cpp54
-rw-r--r--indra/newview/llinventoryfilter.cpp9
-rw-r--r--indra/newview/llinventorypanel.cpp20
-rw-r--r--indra/newview/llinventorypanel.h1
-rw-r--r--indra/newview/llpanelobjectinventory.cpp10
-rw-r--r--indra/newview/lltexturectrl.cpp15
6 files changed, 50 insertions, 59 deletions
diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp
index 8a4b4bae84..586965e5a0 100644
--- a/indra/newview/llfolderviewmodelinventory.cpp
+++ b/indra/newview/llfolderviewmodelinventory.cpp
@@ -29,6 +29,7 @@
#include "llinventorymodelbackgroundfetch.h"
#include "llinventorypanel.h"
#include "lltooldraganddrop.h"
+#include "llfavoritesbar.h"
//
// class LLFolderViewModelInventory
@@ -134,7 +135,6 @@ void LLFolderViewModelItemInventory::setPassedFilter(bool passed, S32 filter_gen
if (passed_filter_before != mPrevPassedAllFilters)
{
- //TODO RN: ensure this still happens, but without dependency on folderview
LLFolderViewFolder* parent_folder = mFolderViewItem->getParentFolder();
if (parent_folder)
{
@@ -236,39 +236,31 @@ const LLFolderViewModelInventory* LLInventoryPanel::getFolderViewModel() const
bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a, const LLFolderViewModelItemInventory* const& b) const
{
- // ignore sort order for landmarks in the Favorites folder.
- // they should be always sorted as in Favorites bar. See EXT-719
- //TODO RN: fix sorting in favorites folder
- //if (a->getSortGroup() == SG_ITEM
- // && b->getSortGroup() == SG_ITEM
- // && a->getInventoryType() == LLInventoryType::IT_LANDMARK
- // && b->getInventoryType() == LLInventoryType::IT_LANDMARK)
- //{
-
- // static const LLUUID& favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
-
- // LLUUID a_uuid = a->getParentFolder()->getUUID();
- // LLUUID b_uuid = b->getParentFolder()->getUUID();
-
- // if ((a_uuid == favorites_folder_id && b_uuid == favorites_folder_id))
- // {
- // // *TODO: mantipov: probably it is better to add an appropriate method to LLFolderViewItem
- // // or to LLInvFVBridge
- // LLViewerInventoryItem* aitem = (static_cast<const LLItemBridge*>(a))->getItem();
- // LLViewerInventoryItem* bitem = (static_cast<const LLItemBridge*>(b))->getItem();
- // if (!aitem || !bitem)
- // return false;
- // S32 a_sort = aitem->getSortField();
- // S32 b_sort = bitem->getSortField();
- // return a_sort < b_sort;
- // }
- //}
+ // Ignore sort order for landmarks in the Favorites folder.
+ // In that folder, landmarks should be always sorted as in the Favorites bar. See EXT-719
+ if (a->getSortGroup() == SG_ITEM
+ && b->getSortGroup() == SG_ITEM
+ && a->getInventoryType() == LLInventoryType::IT_LANDMARK
+ && b->getInventoryType() == LLInventoryType::IT_LANDMARK)
+ {
+ static const LLUUID& favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ // If both landmarks are in the Favorites folder...
+ if (gInventory.isObjectDescendentOf(a->getUUID(), favorites_folder_id) && gInventory.isObjectDescendentOf(b->getUUID(), favorites_folder_id))
+ {
+ // Get their index in that folder
+ S32 a_sort = LLFavoritesOrderStorage::instance().getSortIndex(a->getUUID());
+ S32 b_sort = LLFavoritesOrderStorage::instance().getSortIndex(b->getUUID());
+ // Note: this test is a bit overkill: since they are both in the Favorites folder, we shouldn't get negative index values...
+ if (!((a_sort < 0) && (b_sort < 0)))
+ {
+ return a_sort < b_sort;
+ }
+ }
+ }
// We sort by name if we aren't sorting by date
// OR if these are folders and we are sorting folders by name.
- bool by_name = (!mByDate
- || (mFoldersByName
- && (a->getSortGroup() != SG_ITEM)));
+ bool by_name = (!mByDate || (mFoldersByName && (a->getSortGroup() != SG_ITEM)));
if (a->getSortGroup() != b->getSortGroup())
{
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index c913269aad..92f2d33073 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -42,8 +42,6 @@
#include "llclipboard.h"
#include "lltrans.h"
-//TODO RN: fix use of static cast as much as possible
-
LLFastTimer::DeclareTimer FT_FILTER_CLIPBOARD("Filter Clipboard");
LLInventoryFilter::FilterOps::FilterOps(const Params& p)
@@ -83,7 +81,7 @@ LLInventoryFilter::LLInventoryFilter(const Params& p)
bool LLInventoryFilter::check(const LLFolderViewModelItem* item)
{
- const LLFolderViewModelItemInventory* listener = static_cast<const LLFolderViewModelItemInventory*>(item);
+ const LLFolderViewModelItemInventory* listener = dynamic_cast<const LLFolderViewModelItemInventory*>(item);
// Clipboard cut items are *always* filtered so we need this value upfront
const BOOL passed_clipboard = (listener ? checkAgainstClipboard(listener->getUUID()) : TRUE);
@@ -122,7 +120,7 @@ bool LLInventoryFilter::check(const LLInventoryItem* item)
bool LLInventoryFilter::checkFolder(const LLFolderViewModelItem* item) const
{
- const LLFolderViewModelItemInventory* listener = static_cast<const LLFolderViewModelItemInventory*>(item);
+ const LLFolderViewModelItemInventory* listener = dynamic_cast<const LLFolderViewModelItemInventory*>(item);
if (!listener)
{
llerrs << "Folder view event listener not found." << llendl;
@@ -384,8 +382,7 @@ const std::string& LLInventoryFilter::getFilterSubString(BOOL trim) const
std::string::size_type LLInventoryFilter::getStringMatchOffset(LLFolderViewModelItem* item) const
{
- const LLFolderViewModelItemInventory* listener = static_cast<const LLFolderViewModelItemInventory*>(item);
- return mFilterSubString.size() ? listener->getSearchableName().find(mFilterSubString) : std::string::npos;
+ return mFilterSubString.size() ? item->getSearchableName().find(mFilterSubString) : std::string::npos;
}
bool LLInventoryFilter::isDefault() const
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 81e7f166e1..25dc365467 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -684,8 +684,9 @@ void LLInventoryPanel::initializeViews()
}
else
{
- buildNewViews(gInventory.getRootFolderID());
- buildNewViews(gInventory.getLibraryRootFolderID());
+ // Default case: always add "My Inventory" first, "Library" second
+ buildNewViews(gInventory.getRootFolderID()); // My Inventory
+ buildNewViews(gInventory.getLibraryRootFolderID()); // Library
}
gIdleCallbacks.addFunction(idle, this);
@@ -1354,6 +1355,21 @@ void LLInventoryPanel::doToSelected(const LLSD& userdata)
return;
}
+BOOL LLInventoryPanel::handleKeyHere( KEY key, MASK mask )
+{
+ BOOL handled = FALSE;
+ switch (key)
+ {
+ case KEY_RETURN:
+ // Open selected items if enter key hit on the inventory panel
+ if (mask == MASK_NONE)
+ {
+ LLInventoryAction::doToSelected(mInventory, mFolderRoot, "open");
+ handled = TRUE;
+ }
+ }
+ return handled;
+}
/************************************************************************/
/* Recent Inventory Panel related class */
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 9639086c11..6eb85fbad2 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -143,6 +143,7 @@ public:
// LLView methods
void draw();
+ /*virtual*/ BOOL handleKeyHere( KEY key, MASK mask );
BOOL handleHover(S32 x, S32 y, MASK mask);
BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
EDragAndDropType cargo_type,
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index a2aabb50b5..527aefe821 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -1555,6 +1555,10 @@ void LLPanelObjectInventory::reset()
mCommitCallbackRegistrar.pushScope(); // push local callbacks
+ // Reset the inventory model to show all folders by default
+ mInventoryViewModel.getFilter().setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);
+
+ // Create a new folder view root
LLRect dummy_rect(0, 1, 1, 0);
LLFolderView::Params p;
p.name = "task inventory";
@@ -1566,11 +1570,7 @@ void LLPanelObjectInventory::reset()
p.view_model = &mInventoryViewModel;
p.root = NULL;
mFolders = LLUICtrlFactory::create<LLFolderView>(p);
- // this ensures that we never say "searching..." or "no items found"
- //TODO RN: make this happen by manipulating filter object directly
- LLInventoryFilter& inventoryFilter = dynamic_cast<LLInventoryFilter&>(mFolders->getFolderViewModel()->getFilter());
- inventoryFilter.setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);
-
+
mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
if (hasFocus())
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 65f0290060..007eb8e33f 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -652,26 +652,11 @@ void LLFloaterTexturePicker::draw()
{
folder_view->setPinningSelectedItem(mSelectedItemPinned);
folder_view->getViewModelItem()->dirtyFilter();
- //TODO RN: test..still works without this?
- //folder_view->arrangeFromRoot();
-
mSelectedItemPinned = TRUE;
}
}
}
-// static
-/*
-void LLFloaterTexturePicker::onSaveAnotherCopyDialog( S32 option, void* userdata )
-{
- LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
- if( 0 == option )
- {
- self->copyToInventoryFinal();
- }
-}
-*/
-
const LLUUID& LLFloaterTexturePicker::findItemID(const LLUUID& asset_id, BOOL copyable_only)
{
LLViewerInventoryCategory::cat_array_t cats;