fix message input initial focus loss

This commit is contained in:
kosyak 2024-12-10 23:40:54 +01:00
parent 414b0c7978
commit 44acdbd2cb

View file

@ -3233,10 +3233,19 @@ public class ConversationFragment extends XmppFragment
.setOpenConversation(this.conversation);
if (commandAdapter != null && conversation != originalConversation) {
View currentFocus = null;
if (activity != null) {
currentFocus = activity.getCurrentFocus();
}
conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, originalConversation);
refreshCommands();
maybeRestoreMessageInputFocus(currentFocus);
}
if (commandAdapter == null && conversation != null) {
View currentFocus = null;
if (activity != null) {
currentFocus = activity.getCurrentFocus();
}
conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, null);
commandAdapter = new CommandAdapter((XmppActivity) getActivity());
binding.commandsView.setAdapter(commandAdapter);
@ -3247,6 +3256,7 @@ public class ConversationFragment extends XmppFragment
activity.startCommand(conversation.getAccount(), command.getAttributeAsJid("jid"), command.getAttribute("node"));
});
refreshCommands();
maybeRestoreMessageInputFocus(currentFocus);
}
previousClickedReply = null;
@ -3291,6 +3301,12 @@ public class ConversationFragment extends XmppFragment
}
}
private void maybeRestoreMessageInputFocus(View currentFocus) {
if (currentFocus == this.binding.textinput) {
this.binding.textinput.requestFocus();
}
}
private void resetUnreadMessagesCount() {
lastMessageUuid = null;
hideUnreadMessagesCount();