From d1c14053dfc2901112cf3d6d16d67aa77764c894 Mon Sep 17 00:00:00 2001 From: Phillip Davis Date: Tue, 7 Apr 2026 13:20:33 -0400 Subject: [PATCH] onPageSelected should ignore other Conversations --- .../conversations/entities/Conversation.java | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index 4415977d934b495eec2179e6e132b6911a6921f8..d1a826248df7c18dbefc3d26b5f6db54b28d0d77 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -1861,14 +1861,28 @@ public class Conversation extends AbstractEntity tabs.setupWithViewPager(pager); pager.post(() -> pager.setCurrentItem(getCurrentTab())); - pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - public void onPageScrollStateChanged(int state) { } - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } + pager.addOnPageChangeListener(new PagerChangeListener(Conversation.this)); + } - public void onPageSelected(int position) { - setCurrentTab(position); - } - }); + private static class PagerChangeListener implements ViewPager.OnPageChangeListener { + private final Conversation conversation; + + PagerChangeListener(final Conversation conversation) { + this.conversation = conversation; + } + + @Override + public void onPageScrollStateChanged(int state) { } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } + + @Override + public void onPageSelected(int position) { + final ViewPager pager = conversation.pagerAdapter.mPager.get(); + if (pager == null || pager.getAdapter() != conversation.pagerAdapter) return; + conversation.setCurrentTab(position); + } } public void show() {