@@ -174,7 +174,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
174
174
private int charCount , charLimit , trimmedCharCount ;
175
175
176
176
private Button publishButton , languageButton , scheduleTimeBtn , draftsBtn ;
177
- private PopupMenu languagePopup , visibilityPopup , draftOptionsPopup ;
177
+ private PopupMenu languagePopup , visibilityPopup , draftOptionsPopup , attachPopup ;
178
178
private ImageButton mediaBtn , pollBtn , emojiBtn , spoilerBtn , visibilityBtn , scheduleDraftDismiss ;
179
179
private ImageView sensitiveIcon ;
180
180
private ComposeMediaLayout attachmentsView ;
@@ -327,7 +327,19 @@ public void getOutline(View view, Outline outline){
327
327
sensitiveItem =view .findViewById (R .id .sensitive_item );
328
328
replyText =view .findViewById (R .id .reply_text );
329
329
330
- mediaBtn .setOnClickListener (v ->openFilePicker ());
330
+ if (isPhotoPickerAvailable ()) {
331
+ PopupMenu attachPopup = new PopupMenu (getContext (), mediaBtn );
332
+ attachPopup .inflate (R .menu .attach );
333
+ attachPopup .setOnMenuItemClickListener (i -> {
334
+ openFilePicker (i .getItemId () == R .id .media );
335
+ return true ;
336
+ });
337
+ UiUtils .enablePopupMenuIcons (getContext (), attachPopup );
338
+ mediaBtn .setOnClickListener (v ->attachPopup .show ());
339
+ mediaBtn .setOnTouchListener (attachPopup .getDragToOpenListener ());
340
+ } else {
341
+ mediaBtn .setOnClickListener (v -> openFilePicker (false ));
342
+ }
331
343
pollBtn .setOnClickListener (v ->togglePoll ());
332
344
emojiBtn .setOnClickListener (v ->emojiKeyboard .toggleKeyboardPopup (mainEditText ));
333
345
spoilerBtn .setOnClickListener (v ->toggleSpoiler ());
@@ -1176,9 +1188,9 @@ private boolean isPhotoPickerAvailable() {
1176
1188
*
1177
1189
* <p>For earlier versions use the built in docs ui via {@link Intent#ACTION_GET_CONTENT}
1178
1190
*/
1179
- private void openFilePicker (){
1191
+ private void openFilePicker (boolean photoPicker ){
1180
1192
Intent intent ;
1181
- boolean usePhotoPicker = isPhotoPickerAvailable ();
1193
+ boolean usePhotoPicker = photoPicker && isPhotoPickerAvailable ();
1182
1194
if (usePhotoPicker ) {
1183
1195
intent = new Intent (MediaStore .ACTION_PICK_IMAGES );
1184
1196
intent .putExtra (MediaStore .EXTRA_PICK_IMAGES_MAX , MediaStore .getPickImagesMaxLimit ());
0 commit comments