Use onCreateOptionsMenu when to inflate a menu in order for menu items to appear correctly in RTL languages.

The bug was reported in
https://community.signalusers.org/t/beta-feedback-for-the-upcoming-android-4-70-release/16449/20?u=alan-signal, but it was not necessarily a regression caused by the commit suggested in the forum post. It is more like that the bug was finally exposed by the commit. Before the commit the menu items were not properly aligned nor translated upon configuration changes in RTL languages.
This commit is contained in:
Fumiaki Yoshimatsu 2020-08-29 10:45:11 -04:00 committed by Alan Evans
parent e8be1ad752
commit 1e37951701
5 changed files with 21 additions and 13 deletions

View file

@ -431,13 +431,17 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
public boolean onCreateOptionsMenu(Menu menu) {
menu.clear();
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.media_preview, menu);
super.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (!isMediaInDb()) {
menu.findItem(R.id.media_preview__overview).setVisible(false);
menu.findItem(R.id.delete).setVisible(false);
@ -447,6 +451,7 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity
menu.findItem(R.id.media_preview__overview).setVisible(false);
}
super.onPrepareOptionsMenu(menu);
return true;
}

View file

@ -138,11 +138,11 @@ public class NewConversationActivity extends ContactSelectionActivity
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
public boolean onCreateOptionsMenu(Menu menu) {
menu.clear();
getMenuInflater().inflate(R.menu.new_conversation_activity, menu);
super.onPrepareOptionsMenu(menu);
super.onCreateOptionsMenu(menu);
return true;
}

View file

@ -132,12 +132,13 @@ public class PassphrasePromptActivity extends PassphraseActivity {
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = this.getMenuInflater();
menu.clear();
inflater.inflate(R.menu.log_submit, menu);
super.onPrepareOptionsMenu(menu);
super.onCreateOptionsMenu(menu);
return true;
}

View file

@ -766,7 +766,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = this.getMenuInflater();
menu.clear();
@ -785,7 +785,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
if (recipient != null && recipient.get().isMuted()) inflater.inflate(R.menu.conversation_muted, menu);
else inflater.inflate(R.menu.conversation_unmuted, menu);
super.onPrepareOptionsMenu(menu);
super.onCreateOptionsMenu(menu);
return true;
}
@ -921,7 +921,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
}
});
super.onPrepareOptionsMenu(menu);
super.onCreateOptionsMenu(menu);
return true;
}

View file

@ -54,6 +54,7 @@ import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.widget.TooltipCompat;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.view.ViewCompat;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.ProcessLifecycleOwner;
@ -283,12 +284,13 @@ public class ConversationListFragment extends MainFragment implements ActionMode
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = requireActivity().getMenuInflater();
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.text_secure_normal, menu);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.menu_insights).setVisible(TextSecurePreferences.isSmsEnabled(requireContext()));
menu.findItem(R.id.menu_clear_passphrase).setVisible(!TextSecurePreferences.isPasswordDisabled(requireContext()));
}