summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llfolderviewmodelinventory.cpp8
-rw-r--r--indra/newview/llfolderviewmodelinventory.h2
-rw-r--r--indra/newview/llimfloatercontainer.h4
-rw-r--r--indra/newview/llinventoryfilter.cpp18
-rw-r--r--indra/newview/llinventoryfilter.h6
5 files changed, 22 insertions, 16 deletions
diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp
index 13ca73917b..0878d15d06 100644
--- a/indra/newview/llfolderviewmodelinventory.cpp
+++ b/indra/newview/llfolderviewmodelinventory.cpp
@@ -144,11 +144,13 @@ bool LLFolderViewModelItemInventory::descendantsPassedFilter(S32 filter_generati
return mMostFilteredDescendantGeneration >= filter_generation;
}
-void LLFolderViewModelItemInventory::setPassedFilter(bool passed, bool passed_folder, S32 filter_generation)
+void LLFolderViewModelItemInventory::setPassedFilter(bool passed, bool passed_folder, S32 filter_generation, std::string::size_type string_offset, std::string::size_type string_size)
{
mPassedFilter = passed;
mPassedFolderFilter = passed_folder;
mLastFilterGeneration = filter_generation;
+ mStringMatchOffsetFilter = string_offset;
+ mStringFilterSize = string_size;
bool passed_filter_before = mPrevPassedAllFilters;
mPrevPassedAllFilters = passedFilter(filter_generation);
@@ -226,9 +228,7 @@ void LLFolderViewModelItemInventory::filter( LLFolderViewFilter& filter)
? filter.checkFolder(this)
: true;
- setPassedFilter(passed_filter, passed_filter_folder, filter_generation);
- //TODO RN: create interface for string highlighting
- //mStringMatchOffset = filter.getStringMatchOffset(this);
+ setPassedFilter(passed_filter, passed_filter_folder, filter_generation, filter.getStringMatchOffset(this), filter.getFilterStringSize());
}
}
diff --git a/indra/newview/llfolderviewmodelinventory.h b/indra/newview/llfolderviewmodelinventory.h
index ab67c93897..72c8047325 100644
--- a/indra/newview/llfolderviewmodelinventory.h
+++ b/indra/newview/llfolderviewmodelinventory.h
@@ -58,7 +58,7 @@ public:
virtual bool potentiallyVisible();
virtual bool passedFilter(S32 filter_generation = -1);
virtual bool descendantsPassedFilter(S32 filter_generation = -1);
- virtual void setPassedFilter(bool filtered, bool filtered_folder, S32 filter_generation);
+ virtual void setPassedFilter(bool filtered, bool filtered_folder, S32 filter_generation, std::string::size_type string_offset = std::string::npos, std::string::size_type string_size = 0);
virtual void filter( LLFolderViewFilter& filter);
virtual void filterChildItem( LLFolderViewModelItem* item, LLFolderViewFilter& filter);
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 7005ab7b6a..9b487dd652 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -91,7 +91,7 @@ public:
virtual bool potentiallyVisible() { return true; }
virtual void filter( LLFolderViewFilter& filter) { }
virtual bool descendantsPassedFilter(S32 filter_generation = -1) { return true; }
- virtual void setPassedFilter(bool passed, bool passed_folder, S32 filter_generation) { }
+ virtual void setPassedFilter(bool passed, bool passed_folder, S32 filter_generation, std::string::size_type string_offset = std::string::npos, std::string::size_type string_size = 0) { }
virtual bool passedFilter(S32 filter_generation = -1) { return true; }
// The action callbacks
@@ -142,6 +142,8 @@ public:
void setEmptyLookupMessage(const std::string& message) { }
std::string getEmptyLookupMessage() const { return mEmpty; }
bool showAllResults() const { return true; }
+ std::string::size_type getStringMatchOffset(LLFolderViewModelItem* item) const { return std::string::npos; }
+ std::string::size_type getFilterStringSize() const { return 0; }
bool isActive() const { return false; }
bool isModified() const { return false; }
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index b4be927b09..4f4030550f 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -95,9 +95,9 @@ bool LLInventoryFilter::check(const LLFolderViewModelItem* item)
return passed_clipboard;
}
- std::string::size_type string_offset = mFilterSubString.size() ? listener->getSearchableName().find(mFilterSubString) : 0;
+ std::string::size_type string_offset = mFilterSubString.size() ? listener->getSearchableName().find(mFilterSubString) : std::string::npos;
- BOOL passed = string_offset != std::string::npos;
+ BOOL passed = (mFilterSubString.size() == 0 || string_offset != std::string::npos);
passed = passed && checkAgainstFilterType(listener);
passed = passed && checkAgainstPermissions(listener);
passed = passed && checkAgainstFilterLinks(listener);
@@ -108,7 +108,7 @@ bool LLInventoryFilter::check(const LLFolderViewModelItem* item)
bool LLInventoryFilter::check(const LLInventoryItem* item)
{
- std::string::size_type string_offset = mFilterSubString.size() ? item->getName().find(mFilterSubString) : std::string::npos;
+ std::string::size_type string_offset = mFilterSubString.size() ? item->getName().find(mFilterSubString) : std::string::npos;
const bool passed_filtertype = checkAgainstFilterType(item);
const bool passed_permissions = checkAgainstPermissions(item);
@@ -116,7 +116,7 @@ bool LLInventoryFilter::check(const LLInventoryItem* item)
const bool passed = (passed_filtertype
&& passed_permissions
&& passed_clipboard
- && (mFilterSubString.size() == 0 || string_offset != std::string::npos));
+ && (mFilterSubString.size() == 0 || string_offset != std::string::npos));
return passed;
}
@@ -383,9 +383,10 @@ const std::string& LLInventoryFilter::getFilterSubString(BOOL trim) const
return mFilterSubString;
}
-std::string::size_type LLInventoryFilter::getStringMatchOffset(LLFolderViewItem* item) const
+std::string::size_type LLInventoryFilter::getStringMatchOffset(LLFolderViewModelItem* item) const
{
- return mFilterSubString.size() ? item->getName().find(mFilterSubString) : std::string::npos;
+ const LLFolderViewModelItemInventory* listener = static_cast<const LLFolderViewModelItemInventory*>(item);
+ return mFilterSubString.size() ? listener->getSearchableName().find(mFilterSubString) : std::string::npos;
}
bool LLInventoryFilter::isDefault() const
@@ -1004,6 +1005,11 @@ bool LLInventoryFilter::hasFilterString() const
return mFilterSubString.size() > 0;
}
+std::string::size_type LLInventoryFilter::getFilterStringSize() const
+{
+ return mFilterSubString.size();
+}
+
PermissionMask LLInventoryFilter::getFilterPermissions() const
{
return mFilterOps.mPermissions;
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
index af245a9c3b..a8d39735f3 100644
--- a/indra/newview/llinventoryfilter.h
+++ b/indra/newview/llinventoryfilter.h
@@ -193,10 +193,8 @@ public:
bool showAllResults() const;
-
- std::string::size_type getStringMatchOffset() const;
-
- std::string::size_type getStringMatchOffset(LLFolderViewItem* item) const;
+ std::string::size_type getStringMatchOffset(LLFolderViewModelItem* item) const;
+ std::string::size_type getFilterStringSize() const;
// +-------------------------------------------------------------------+
// + Presentation
// +-------------------------------------------------------------------+