Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Alchemy Viewer
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Package registry
Operate
Terraform modules
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Silent mode is enabled
All outbound communications are blocked.
Learn more
.
Show more breadcrumbs
Alchemy Viewer
Alchemy Viewer
Commits
7d8b90ce
Commit
7d8b90ce
authored
10 years ago
by
andreykproductengine
Browse files
Options
Downloads
Patches
Plain Diff
MAINT-4289 FIXED [BEAR] Recent Items "Reset Filters" not working correctly
parent
906e2024
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
indra/llui/llfolderviewitem.cpp
+24
-12
24 additions, 12 deletions
indra/llui/llfolderviewitem.cpp
indra/llui/llfolderviewitem.h
+1
-0
1 addition, 0 deletions
indra/llui/llfolderviewitem.h
indra/newview/llfolderviewmodelinventory.cpp
+1
-3
1 addition, 3 deletions
indra/newview/llfolderviewmodelinventory.cpp
with
26 additions
and
15 deletions
indra/llui/llfolderviewitem.cpp
+
24
−
12
View file @
7d8b90ce
...
...
@@ -256,6 +256,24 @@ BOOL LLFolderViewItem::passedFilter(S32 filter_generation)
return
getViewModelItem
()
->
passedFilter
(
filter_generation
);
}
BOOL
LLFolderViewItem
::
isPotentiallyVisible
(
S32
filter_generation
)
{
// Item should be visible if:
// 1. item passed current filter
// 2. item was updated (gen < 0) but has descendants that passed filter
// 3. item was recently updated and was visible before update
LLFolderViewModelItem
*
model
=
getViewModelItem
();
if
(
model
->
getLastFilterGeneration
()
<
0
)
{
return
model
->
descendantsPassedFilter
(
filter_generation
)
||
getVisible
();
}
else
{
return
model
->
passedFilter
(
filter_generation
);
}
}
void
LLFolderViewItem
::
refresh
()
{
LLFolderViewModelItem
&
vmi
=
*
getViewModelItem
();
...
...
@@ -970,9 +988,8 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height )
LL_RECORD_BLOCK_TIME
(
FTM_ARRANGE
);
// evaluate mHasVisibleChildren
bool
default_filter
=
getRoot
()
->
getFolderViewModel
()
->
getFilter
().
isDefault
();
mHasVisibleChildren
=
default_filter
&&
(
mItems
.
size
()
||
mFolders
.
size
());
if
(
!
default_filter
&&
getViewModelItem
()
->
descendantsPassedFilter
())
mHasVisibleChildren
=
false
;
if
(
getViewModelItem
()
->
descendantsPassedFilter
())
{
// We have to verify that there's at least one child that's not filtered out
bool
found
=
false
;
...
...
@@ -980,7 +997,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height )
for
(
items_t
::
iterator
iit
=
mItems
.
begin
();
iit
!=
mItems
.
end
();
++
iit
)
{
LLFolderViewItem
*
itemp
=
(
*
iit
);
found
=
itemp
->
passedFilter
();
found
=
itemp
->
isPotentiallyVisible
();
if
(
found
)
break
;
}
...
...
@@ -990,7 +1007,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height )
for
(
folders_t
::
iterator
fit
=
mFolders
.
begin
();
fit
!=
mFolders
.
end
();
++
fit
)
{
LLFolderViewFolder
*
folderp
=
(
*
fit
);
found
=
folderp
->
passedFilter
();
found
=
folderp
->
isPotentiallyVisible
();
if
(
found
)
break
;
}
...
...
@@ -1023,12 +1040,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height )
for
(
folders_t
::
iterator
fit
=
mFolders
.
begin
();
fit
!=
mFolders
.
end
();
++
fit
)
{
LLFolderViewFolder
*
folderp
=
(
*
fit
);
// passedFilter() will show everything that passed filter or has descendants that passed filter
// also it will hide all filter-pending folders (they will be shown later if needed).
// but since refreshed folders are 'pending', they can be rendered invisible by passedFilter()
// even if we are not using filter at the moment, default_filter is used to prevent it
folderp
->
setVisible
(
default_filter
||
folderp
->
passedFilter
());
folderp
->
setVisible
(
folderp
->
isPotentiallyVisible
());
if
(
folderp
->
getVisible
())
{
...
...
@@ -1047,7 +1059,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height )
iit
!=
mItems
.
end
();
++
iit
)
{
LLFolderViewItem
*
itemp
=
(
*
iit
);
itemp
->
setVisible
(
default_filter
||
itemp
->
passedFilter
());
itemp
->
setVisible
(
itemp
->
isPotentiallyVisible
());
if
(
itemp
->
getVisible
())
{
...
...
This diff is collapsed.
Click to expand it.
indra/llui/llfolderviewitem.h
+
1
−
0
View file @
7d8b90ce
...
...
@@ -254,6 +254,7 @@ class LLFolderViewItem : public LLView
S32
getIndentation
()
{
return
mIndentation
;
}
virtual
BOOL
passedFilter
(
S32
filter_generation
=
-
1
);
virtual
BOOL
isPotentiallyVisible
(
S32
filter_generation
=
-
1
);
// refresh information from the object being viewed.
virtual
void
refresh
();
...
...
This diff is collapsed.
Click to expand it.
indra/newview/llfolderviewmodelinventory.cpp
+
1
−
3
View file @
7d8b90ce
...
...
@@ -129,15 +129,13 @@ void LLFolderViewModelItemInventory::requestSort()
void
LLFolderViewModelItemInventory
::
setPassedFilter
(
bool
passed
,
S32
filter_generation
,
std
::
string
::
size_type
string_offset
,
std
::
string
::
size_type
string_size
)
{
bool
init_state
=
getLastFilterGeneration
()
<
0
;
LLFolderViewModelItemCommon
::
setPassedFilter
(
passed
,
filter_generation
,
string_offset
,
string_size
);
bool
before
=
mPrevPassedAllFilters
;
mPrevPassedAllFilters
=
passedFilter
(
filter_generation
);
if
(
before
!=
mPrevPassedAllFilters
||
(
init_state
&&
before
&&
!
mFolderViewItem
->
getVisible
())
)
if
(
before
!=
mPrevPassedAllFilters
)
{
// Need to rearrange the folder if the filtered state of the item changed
// or folder was hidden during update as filter-dirty (MAINT-4218)
LLFolderViewFolder
*
parent_folder
=
mFolderViewItem
->
getParentFolder
();
if
(
parent_folder
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment