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

View file

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