From d23e0168500d18987bb4449215951dedeb536ae3 Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 8 Apr 2016 15:59:26 +0000 Subject: [PATCH] Avoid toggling multi-select mode if long press on card art Avoid toggling checkbox if user taps on card art --- .../src/forge/itemmanager/CardManager.java | 3 ++ .../forge/itemmanager/SpellShopManager.java | 3 ++ .../forge/itemmanager/views/ItemListView.java | 48 ++++++++++--------- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/forge-gui-mobile/src/forge/itemmanager/CardManager.java b/forge-gui-mobile/src/forge/itemmanager/CardManager.java index 298af340e0f..8bf0911ddad 100644 --- a/forge-gui-mobile/src/forge/itemmanager/CardManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/CardManager.java @@ -79,6 +79,9 @@ public class CardManager extends ItemManager { @Override public boolean longPress(Integer index, Entry value, float x, float y) { + if (CardRenderer.cardListItemTap(model.getOrderedList(), index, CardManager.this, x, y, 1, compactModeHandler.isCompactMode())) { + return true; //avoid calling onCardLongPress if user long presses on card art + } onCardLongPress(index, value, x, y); return true; } diff --git a/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java b/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java index 1161ef3a57c..4f969c315c7 100644 --- a/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java @@ -100,6 +100,9 @@ public class SpellShopManager extends ItemManager { @Override public boolean longPress(Integer index, Entry value, float x, float y) { + if (value.getKey() instanceof PaperCard && CardRenderer.cardListItemTap(model.getOrderedList(), index, SpellShopManager.this, x, y, 1, compactModeHandler.isCompactMode())) { + return true; //avoid calling toggleMultiSelectMode if user long presses on card art + } toggleMultiSelectMode(index); return true; } diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ItemListView.java b/forge-gui-mobile/src/forge/itemmanager/views/ItemListView.java index 79dcfb0fcc7..428211d4b04 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ItemListView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ItemListView.java @@ -200,36 +200,38 @@ public final class ItemListView extends ItemView { @Override public boolean tap(Integer index, Entry value, float x, float y, int count) { - if (maxSelections > 1) { - if (selectedIndices.contains(index)) { - //allow removing selection if it won't fall below min - //or if max selected (since you need to be able to deselect an item before selecting a new item) - if (selectedIndices.size() > minSelections || selectedIndices.size() == maxSelections) { - selectedIndices.remove(index); + if (maxSelections > 1) { //if multi-select + //don't toggle checkbox if renderer handles tap + if (!renderer.tap(index, value, x, y, count)) { + if (selectedIndices.contains(index)) { + //allow removing selection if it won't fall below min + //or if max selected (since you need to be able to deselect an item before selecting a new item) + if (selectedIndices.size() > minSelections || selectedIndices.size() == maxSelections) { + selectedIndices.remove(index); + onSelectionChange(); + } + } + else if (selectedIndices.size() < maxSelections) { + selectedIndices.add(index); + Collections.sort(selectedIndices); //ensure selected indices are sorted onSelectionChange(); } } - else if (selectedIndices.size() < maxSelections) { - selectedIndices.add(index); - Collections.sort(selectedIndices); //ensure selected indices are sorted - onSelectionChange(); - } } - else { + else { //if single-select setSelectedIndex(index); - } - if (renderer.tap(index, value, x, y, count)) { - prevTapIndex = index; - return true; //don't activate if renderer handles tap - } - if (maxSelections <= 1) { - if (count == 1) { - itemManager.showMenu(false); - } - else if (count == 2 && index == prevTapIndex) { - itemManager.activateSelectedItems(); + + //don't activate if renderer handles tap + if (!renderer.tap(index, value, x, y, count)) { + if (count == 1) { + itemManager.showMenu(false); + } + else if (count == 2 && index == prevTapIndex) { + itemManager.activateSelectedItems(); + } } } + prevTapIndex = index; return true; }