summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-12 12:29:31 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-12 12:29:31 +0300
commitcc9afb2c1a4d90addc9812aeed93162ed626d50d (patch)
tree2bb9e4e76b898eda838a4c76528c6bb6148dd26e
parentd7ffdc9af2bb56d47f68688ebb44aa1cf900bf0c (diff)
reduce weird behavior in setActiveArticle()
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java43
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java8
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 =