diff --git a/src/org/thoughtcrime/securesms/MessageSelectorFragment.java b/src/org/thoughtcrime/securesms/MessageSelectorFragment.java index ece87c556..08727fb79 100644 --- a/src/org/thoughtcrime/securesms/MessageSelectorFragment.java +++ b/src/org/thoughtcrime/securesms/MessageSelectorFragment.java @@ -29,6 +29,10 @@ public abstract class MessageSelectorFragment protected abstract void setCorrectMenuVisibility(Menu menu); + protected ActionMode getActionMode() { + return actionMode; + } + protected DcMsg getSelectedMessageRecord(Set messageRecords) { if (messageRecords.size() == 1) return messageRecords.iterator().next(); else throw new AssertionError(); diff --git a/src/org/thoughtcrime/securesms/ProfileActivity.java b/src/org/thoughtcrime/securesms/ProfileActivity.java index bb90d9202..73363e321 100644 --- a/src/org/thoughtcrime/securesms/ProfileActivity.java +++ b/src/org/thoughtcrime/securesms/ProfileActivity.java @@ -9,11 +9,13 @@ import android.provider.Settings; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.view.ActionMode; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -262,11 +264,29 @@ public class ProfileActivity extends PassphraseRequiredActionBarActivity } private class ProfilePagerAdapter extends FragmentStatePagerAdapter { + private Object currentFragment = null; ProfilePagerAdapter(FragmentManager fragmentManager) { super(fragmentManager); } + @Override + public void setPrimaryItem(ViewGroup container, int position, Object object) { + super.setPrimaryItem(container, position, object); + if (currentFragment != null && currentFragment != object) { + ActionMode action = null; + if (currentFragment instanceof MessageSelectorFragment) { + action = ((MessageSelectorFragment) currentFragment).getActionMode(); + } else if (currentFragment instanceof ProfileSettingsFragment) { + action = ((ProfileSettingsFragment) currentFragment).getActionMode(); + } + if (action != null) { + action.finish(); + } + } + currentFragment = object; + } + @Override public Fragment getItem(int position) { int tabId = tabs.get(position); diff --git a/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java b/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java index 59d7f2343..0f9192084 100644 --- a/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java +++ b/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java @@ -63,6 +63,10 @@ public class ProfileSettingsFragment extends Fragment protected int chatId; private int contactId; + protected ActionMode getActionMode() { + return actionMode; + } + @Override public void onCreate(Bundle bundle) { super.onCreate(bundle);