handle mouse right click (#5625)

This commit is contained in:
Tony Tam 2022-01-15 01:44:14 -08:00 committed by GitHub
parent 987dcfec3f
commit 27443bf2c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 0 deletions

View File

@ -1,9 +1,12 @@
package de.danoeh.antennapod.adapter;
import android.app.Activity;
import android.os.Build;
import android.view.ContextMenu;
import android.view.InputDevice;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
@ -85,6 +88,17 @@ public class EpisodeItemListAdapter extends SelectableAdapter<EpisodeItemViewHol
longPressedPosition = holder.getBindingAdapterPosition();
return false;
});
holder.itemView.setOnTouchListener((v, e) -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (e.isFromSource(InputDevice.SOURCE_MOUSE)
&& e.getButtonState() == MotionEvent.BUTTON_SECONDARY) {
longPressedItem = getItem(holder.getBindingAdapterPosition());
longPressedPosition = holder.getBindingAdapterPosition();
return false;
}
}
return false;
});
if (inActionMode()) {
holder.secondaryActionButton.setVisibility(View.GONE);
@ -162,6 +176,9 @@ public class EpisodeItemListAdapter extends SelectableAdapter<EpisodeItemViewHol
if (inActionMode()) {
inflater.inflate(R.menu.multi_select_context_popup, menu);
} else {
if (longPressedItem == null) {
return;
}
inflater.inflate(R.menu.feeditemlist_context, menu);
menu.setHeaderTitle(longPressedItem.getTitle());
FeedItemMenuHandler.onPrepareMenu(menu, longPressedItem, R.id.skip_episode_item);

View File

@ -3,12 +3,15 @@ package de.danoeh.antennapod.adapter;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.view.ContextMenu;
import android.view.InputDevice;
import android.view.LayoutInflater;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.preference.PreferenceManager;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@ -208,6 +211,16 @@ public class NavListAdapter extends RecyclerView.Adapter<NavListAdapter.Holder>
holder.itemView.setOnClickListener(v -> itemAccess.onItemClick(position));
holder.itemView.setOnLongClickListener(v -> itemAccess.onItemLongClick(position));
holder.itemView.setOnTouchListener((v, e) -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (e.isFromSource(InputDevice.SOURCE_MOUSE)
&& e.getButtonState() == MotionEvent.BUTTON_SECONDARY) {
itemAccess.onItemLongClick(position);
return false;
}
}
return false;
});
}
}

View File

@ -4,11 +4,14 @@ import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.text.TextUtils;
import android.view.ContextMenu;
import android.view.InputDevice;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
@ -120,6 +123,20 @@ public class SubscriptionsRecyclerAdapter extends SelectableAdapter<Subscription
return false;
});
holder.itemView.setOnTouchListener((v, e) -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (e.isFromSource(InputDevice.SOURCE_MOUSE)
&& e.getButtonState() == MotionEvent.BUTTON_SECONDARY) {
if (!inActionMode()) {
if (isFeed) {
longPressedPosition = holder.getBindingAdapterPosition();
}
selectedItem = (NavDrawerData.DrawerItem) getItem(holder.getBindingAdapterPosition());
}
}
}
return false;
});
holder.itemView.setOnClickListener(v -> {
if (isFeed) {
if (inActionMode()) {