From 0c332b026b70d90906ba7a17194b98b1e44d8ff3 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sun, 20 Aug 2023 20:48:55 -0500 Subject: [PATCH] Long press send button to send media --- .../ui/ConversationFragment.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 6bbec5bd2f69c4a72279a784b6ab65439d52eb40..14d77c3907b1b03db003f3547139a698121acb0e 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -1359,6 +1359,7 @@ public class ConversationFragment extends XmppFragment binding.messagesView.setAdapter(messageListAdapter); registerForContextMenu(binding.messagesView); + registerForContextMenu(binding.textSendButton); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { this.binding.textinput.setCustomInsertionActionModeCallback( @@ -1552,6 +1553,28 @@ public class ConversationFragment extends XmppFragment public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // This should cancel any remaining click events that would otherwise trigger links v.dispatchTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0f, 0f, 0)); + + if (v == binding.textSendButton) { + super.onCreateContextMenu(menu, v, menuInfo); + try { + java.lang.reflect.Method m = menu.getClass().getSuperclass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); + m.setAccessible(true); + m.invoke(menu, true); + } catch (Exception e) { + Log.w("WUT", "" + e); + e.printStackTrace(); + } + Menu tmpMenu = new PopupMenu(activity, null).getMenu(); + activity.getMenuInflater().inflate(R.menu.fragment_conversation, tmpMenu); + MenuItem attachMenu = tmpMenu.findItem(R.id.action_attach_file); + for (int i = 0; i < attachMenu.getSubMenu().size(); i++) { + MenuItem item = attachMenu.getSubMenu().getItem(i); + MenuItem newItem = menu.add(item.getGroupId(), item.getItemId(), item.getOrder(), item.getTitle()); + newItem.setIcon(item.getIcon()); + } + return; + } + synchronized (this.messageList) { super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo; @@ -1814,7 +1837,7 @@ public class ConversationFragment extends XmppFragment refresh(); return true; default: - return super.onContextItemSelected(item); + return onOptionsItemSelected(item); } }