diff options
| author | Andrew Dolgov <fox@fakecake.org> | 2025-05-12 12:29:31 +0300 |
|---|---|---|
| committer | Andrew Dolgov <fox@fakecake.org> | 2025-05-12 12:29:31 +0300 |
| commit | cc9afb2c1a4d90addc9812aeed93162ed626d50d (patch) | |
| tree | 2bb9e4e76b898eda838a4c76528c6bb6148dd26e | |
| parent | d7ffdc9af2bb56d47f68688ebb44aa1cf900bf0c (diff) | |
reduce weird behavior in setActiveArticle()
4 files changed, 22 insertions, 33 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java index 78dad5e3..e56c387a 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java @@ -159,7 +159,7 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES); ArticlePager af = new ArticlePager(); - af.initialize(article != null ? hf.getArticleById(article.id) : new Article(), feed); + af.initialize(article != null ? article : new Article(), feed); af.setSearchQuery(searchQuery); ft.replace(R.id.article_fragment, af, FRAG_ARTICLE); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index 0595c2ee..4fea0774 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -133,11 +133,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { public void initialize(Feed feed, Article activeArticle, boolean compactMode) { m_feed = feed; m_compactLayoutMode = compactMode; - - if (activeArticle != null) { - m_activeArticle = getArticleById(activeArticle.id); - } - + m_activeArticle = activeArticle; } public boolean onArticleMenuItemSelected(MenuItem item, Article article, int position) { @@ -439,15 +435,11 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { public void onResume() { super.onResume(); - //if (m_adapter != null) m_adapter.notifyDataSetChanged(); - - if (m_activeArticle != null) { - setActiveArticle(m_activeArticle); - } - if (Application.getArticles().isEmpty()) { refresh(false); - } + } else if (m_activeArticle != null) { + scrollToArticle(m_activeArticle); + } m_activity.invalidateOptionsMenu(); } @@ -1516,20 +1508,17 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { return tmp; } - // if setting active doesn't make sense, scroll to whatever is passed to us + public void scrollToArticle(Article article) { + m_list.scrollToPosition(getArticlePositionById(article.id)); + } + public void setActiveArticle(Article article) { - if (article != m_activeArticle && article != null) { + if (m_list != null && article != null && !article.equalsById(m_activeArticle)) { - // only set active article when it makes sense (in DetailActivity) - if (getActivity() instanceof DetailActivity) { - m_activeArticle = article; - m_adapter.notifyDataSetChanged(); - } + m_activeArticle = article; + m_adapter.notifyDataSetChanged(); - if (m_list != null) { - int position = getArticlePositionById(article.id); - m_list.scrollToPosition(position); - } + scrollToArticle(article); } } @@ -1562,14 +1551,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { return null; } - public Article getArticleById(int id) { - for (Article a : Application.getArticles()) { - if (a.id == id) - return a; - } - return null; - } - public Article getActiveArticle() { return m_activeArticle; } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java index f88ea1a8..8a700a86 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java @@ -525,7 +525,7 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList // this makes position in headlines in master activity (not quite) randomly jump around when returning // even if active article hasn't been changed, i guess keeping it as-is is a lesser evil? - // hf.setActiveArticle(Application.getInstance().tmpActiveArticle); + hf.scrollToArticle(Application.getInstance().tmpActiveArticle); } } } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java index 5ea8c61f..7d476ad6 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java @@ -260,6 +260,14 @@ public class Article implements Parcelable { selected = in.readInt() == 1; site_url = in.readString(); } + + public boolean equalsById(Article article) { + if (article != null && id == article.id) { + return true; + } else { + return false; + } + } @SuppressWarnings("rawtypes") public static final Parcelable.Creator CREATOR = |