use invalidateOptionsMenu() to restore menu when leaving search mode

instead of wrongly restoring all menu items to visible when leaving
search mode
This commit is contained in:
adbenitez
2026-03-18 18:43:35 +01:00
parent bebda06160
commit 92cd1fc31c
3 changed files with 12 additions and 15 deletions
@@ -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
}
}
}
@@ -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) {
@@ -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;
}
});