Disable scrolling in contact list while context menu is shown.

Fixes #12530
Closes #12531
This commit is contained in:
fm-sys 2022-10-16 02:34:56 +02:00 committed by Greyson Parrelli
parent 741eb55562
commit 0daed8f7d7
2 changed files with 7 additions and 3 deletions

View file

@ -732,7 +732,7 @@ public final class ContactSelectionListFragment extends LoggingFragment
@Override @Override
public boolean onItemLongClick(ContactSelectionListItem item) { public boolean onItemLongClick(ContactSelectionListItem item) {
if (onItemLongClickListener != null) { if (onItemLongClickListener != null) {
return onItemLongClickListener.onLongClick(item); return onItemLongClickListener.onLongClick(item, recyclerView);
} else { } else {
return false; return false;
} }
@ -868,7 +868,7 @@ public final class ContactSelectionListFragment extends LoggingFragment
} }
public interface OnItemLongClickListener { public interface OnItemLongClickListener {
boolean onLongClick(ContactSelectionListItem contactSelectionListItem); boolean onLongClick(ContactSelectionListItem contactSelectionListItem, RecyclerView recyclerView);
} }
public interface AbstractContactsCursorLoaderFactoryProvider { public interface AbstractContactsCursorLoaderFactoryProvider {

View file

@ -29,6 +29,7 @@ import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
@ -232,7 +233,7 @@ public class NewConversationActivity extends ContactSelectionActivity
} }
@Override @Override
public boolean onLongClick(ContactSelectionListItem contactSelectionListItem) { public boolean onLongClick(ContactSelectionListItem contactSelectionListItem, RecyclerView recyclerView) {
RecipientId recipientId = contactSelectionListItem.getRecipientId().orElse(null); RecipientId recipientId = contactSelectionListItem.getRecipientId().orElse(null);
if (recipientId == null) { if (recipientId == null) {
return false; return false;
@ -248,8 +249,11 @@ public class NewConversationActivity extends ContactSelectionActivity
.preferredHorizontalPosition(SignalContextMenu.HorizontalPosition.START) .preferredHorizontalPosition(SignalContextMenu.HorizontalPosition.START)
.offsetX((int) DimensionUnit.DP.toPixels(12)) .offsetX((int) DimensionUnit.DP.toPixels(12))
.offsetY((int) DimensionUnit.DP.toPixels(12)) .offsetY((int) DimensionUnit.DP.toPixels(12))
.onDismiss(() -> recyclerView.suppressLayout(false))
.show(actions); .show(actions);
recyclerView.suppressLayout(true);
return true; return true;
} }