From 06de741370773ff1ba9922d66d156dfd205926ea Mon Sep 17 00:00:00 2001 From: drdev Date: Tue, 4 Feb 2014 17:45:23 +0000 Subject: [PATCH] Prevent auto-selecting card when first opening deck, changing filters, or expanding/collapsing groups --- .../toolbox/itemmanager/views/ImageView.java | 33 ++++++++++--------- .../toolbox/itemmanager/views/ItemView.java | 2 +- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java index 64de3500bc7..d0296b93674 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java @@ -72,25 +72,14 @@ public class ImageView extends ItemView { //if didn't click on item, see if clicked on group header if (groupBy != null) { Point point = e.getPoint(); - boolean collapsedChanged = false; for (Group group : groups) { - if (!collapsedChanged && group.getBounds().contains(point)) { + if (group.getBounds().contains(point)) { if (!group.items.isEmpty() && point.y < group.getTop() + GROUP_HEADER_HEIGHT) { group.isCollapsed = !group.isCollapsed; clearSelection(); //must clear selection since indices and visible items will be changing updateLayout(false); - collapsedChanged = true; - } - else { - break; - } - } - if (collapsedChanged) { - //if found group to expand/collapse, select next visible item starting at beginning of group - if (!group.isCollapsed && !group.items.isEmpty()) { - setSelectedIndex(group.piles.get(0).items.get(0).index); - break; } + break; } } } @@ -188,7 +177,7 @@ public class ImageView extends ItemView { } if (!forSetup) { - refresh(this.getSelectedItems(), this.getSelectedIndex()); + refresh(null, -1); } } @@ -203,7 +192,21 @@ public class ImageView extends ItemView { pileBy = pileBy0; if (!forSetup) { - refresh(this.getSelectedItems(), this.getSelectedIndex()); + refresh(null, -1); + } + } + + @Override + protected void fixSelection(final Iterable itemsToSelect, final int backupIndexToSelect) { + if (itemsToSelect == null) { + clearSelection(); //just clear selection if no items to select + getScroller().getVerticalScrollBar().setValue(0); //ensure scrolled to top + onSelectionChange(); + } + else { + if (!setSelectedItems(itemsToSelect)) { + setSelectedIndex(backupIndexToSelect); + } } } diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java index 2956fb15d23..12196136d98 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java @@ -115,7 +115,7 @@ public abstract class ItemView { } protected abstract void onResize(); protected abstract void onRefresh(); - private void fixSelection(final Iterable itemsToSelect, final int backupIndexToSelect) { + protected void fixSelection(final Iterable itemsToSelect, final int backupIndexToSelect) { if (itemsToSelect == null) { setSelectedIndex(0, false); //select first item if no items to select getScroller().getVerticalScrollBar().setValue(0); //ensure scrolled to top