fix(StatusDisplayItem): apply filter highlight
The filter highlight was not correctly shown, as the source text was re-parsed when creating the TextStatusDisplayItem.
This commit is contained in:
@@ -275,8 +275,9 @@ public abstract class StatusDisplayItem{
|
|||||||
boolean hasSpoiler=!TextUtils.isEmpty(statusForContent.spoilerText);
|
boolean hasSpoiler=!TextUtils.isEmpty(statusForContent.spoilerText);
|
||||||
if(!TextUtils.isEmpty(statusForContent.content)){
|
if(!TextUtils.isEmpty(statusForContent.content)){
|
||||||
SpannableStringBuilder parsedText=HtmlParser.parse(statusForContent.content, statusForContent.emojis, statusForContent.mentions, statusForContent.tags, accountID, fragment.getContext());
|
SpannableStringBuilder parsedText=HtmlParser.parse(statusForContent.content, statusForContent.emojis, statusForContent.mentions, statusForContent.tags, accountID, fragment.getContext());
|
||||||
HtmlParser.applyFilterHighlights(fragment.getActivity(), parsedText, status.filtered);
|
if(applyingFilter!=null)
|
||||||
TextStatusDisplayItem text=new TextStatusDisplayItem(parentID, HtmlParser.parse(statusForContent.content, statusForContent.emojis, statusForContent.mentions, statusForContent.tags, accountID, fragment.getContext()), fragment, statusForContent, (flags & FLAG_NO_TRANSLATE) != 0);
|
HtmlParser.applyFilterHighlights(fragment.getActivity(), parsedText, status.filtered);
|
||||||
|
TextStatusDisplayItem text=new TextStatusDisplayItem(parentID, parsedText, fragment, statusForContent, (flags & FLAG_NO_TRANSLATE) != 0);
|
||||||
contentItems.add(text);
|
contentItems.add(text);
|
||||||
}else if(!hasSpoiler && header!=null){
|
}else if(!hasSpoiler && header!=null){
|
||||||
header.needBottomPadding=true;
|
header.needBottomPadding=true;
|
||||||
|
|||||||
@@ -321,12 +321,11 @@ public class HtmlParser{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void applyFilterHighlights(Context context, SpannableStringBuilder text, List<FilterResult> filters){
|
public static void applyFilterHighlights(Context context, SpannableStringBuilder text, List<FilterResult> filters){
|
||||||
if (filters == null) return;
|
|
||||||
int fgColor=UiUtils.getThemeColor(context, R.attr.colorM3Error);
|
int fgColor=UiUtils.getThemeColor(context, R.attr.colorM3Error);
|
||||||
int bgColor=UiUtils.getThemeColor(context, R.attr.colorM3ErrorContainer);
|
int bgColor=UiUtils.getThemeColor(context, R.attr.colorM3ErrorContainer);
|
||||||
for(FilterResult filter:filters){
|
for(FilterResult filter:filters){
|
||||||
if(!filter.filter.isActive())
|
if(!filter.filter.isActive())
|
||||||
continue;;
|
continue;
|
||||||
for(String word:filter.keywordMatches){
|
for(String word:filter.keywordMatches){
|
||||||
Matcher matcher=Pattern.compile("\\b"+Pattern.quote(word)+"\\b", Pattern.CASE_INSENSITIVE).matcher(text);
|
Matcher matcher=Pattern.compile("\\b"+Pattern.quote(word)+"\\b", Pattern.CASE_INSENSITIVE).matcher(text);
|
||||||
while(matcher.find()){
|
while(matcher.find()){
|
||||||
|
|||||||
Reference in New Issue
Block a user