From 92cd1fc31c8ea66db187eb7f81882776d6235189 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Wed, 18 Mar 2026 18:43:35 +0100 Subject: [PATCH] use invalidateOptionsMenu() to restore menu when leaving search mode instead of wrongly restoring all menu items to visible when leaving search mode --- .../securesms/BaseActionBarActivity.java | 13 ++++--------- .../securesms/ConversationActivity.java | 10 ++++++---- .../org/thoughtcrime/securesms/WebViewActivity.java | 4 ++-- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/BaseActionBarActivity.java b/src/main/java/org/thoughtcrime/securesms/BaseActionBarActivity.java index beeae75aa..5abc14c01 100644 --- a/src/main/java/org/thoughtcrime/securesms/BaseActionBarActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/BaseActionBarActivity.java @@ -81,19 +81,14 @@ public abstract class BaseActionBarActivity extends AppCompatActivity { } } - public void makeSearchMenuVisible(final Menu menu, final MenuItem searchItem, boolean visible) { + public void makeSearchMenuVisible(final Menu menu, final MenuItem searchItem) { for (int i = 0; i < menu.size(); ++i) { MenuItem item = menu.getItem(i); int id = item.getItemId(); if (id == R.id.menu_search_up || id == R.id.menu_search_down) { - item.setVisible(visible); - } else if (id == R.id.menu_search_counter) { - item.setVisible(false); // always hide menu_search_counter initially - } else if (item == searchItem) { - ; // searchItem is just always visible - } else { - item.setVisible( - !visible); // if search is shown, other items are hidden - and the other way round + item.setVisible(true); + } else if (item != searchItem) { + item.setVisible(false); // hide all other items } } } diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java index 19ed898f9..9f1102697 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java @@ -342,6 +342,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity setDcEventListener(); // reset event listener handleRelaying(); + invalidateOptionsMenu(); // set correct menu visibility in case of chat changes if (fragment != null) { fragment.onNewIntent(); @@ -572,7 +573,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity @Override public boolean onMenuItemActionCollapse(final MenuItem item) { - searchCollapse(menu, item); + searchCollapse(); return true; } }); @@ -1810,14 +1811,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity beforeSearchComposeVisibility = composePanel.getVisibility(); composePanel.setVisibility(View.GONE); - ConversationActivity.this.makeSearchMenuVisible(menu, searchItem, true); + ConversationActivity.this.makeSearchMenuVisible(menu, searchItem); } - private void searchCollapse(final Menu menu, final MenuItem searchItem) { + private void searchCollapse() { searchMenu = null; composePanel.setVisibility(beforeSearchComposeVisibility); - ConversationActivity.this.makeSearchMenuVisible(menu, searchItem, false); + // trigger onPrepareOptionsMenu() to restore correct menu visibility + invalidateOptionsMenu(); } private void handleMenuSearchNext(boolean searchNext) { diff --git a/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java b/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java index d30fe206e..78587dc12 100644 --- a/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java @@ -194,13 +194,13 @@ public class WebViewActivity extends PassphraseRequiredActionBarActivity public boolean onMenuItemActionExpand(final MenuItem item) { searchMenu = menu; WebViewActivity.this.lastQuery = ""; - WebViewActivity.this.makeSearchMenuVisible(menu, searchItem, true); + WebViewActivity.this.makeSearchMenuVisible(menu, searchItem); return true; } @Override public boolean onMenuItemActionCollapse(final MenuItem item) { - WebViewActivity.this.makeSearchMenuVisible(menu, searchItem, false); + WebViewActivity.this.invalidateOptionsMenu(); return true; } });