mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Fixed concurrent list modification bug in PlayArea.
This commit is contained in:
@@ -23,6 +23,7 @@ import java.awt.Rectangle;
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
@@ -393,8 +394,12 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
|
|||||||
*/
|
*/
|
||||||
private void fillRow(final CardStackRow sourceRow, final List<CardStackRow> rows, final CardStackRow row) {
|
private void fillRow(final CardStackRow sourceRow, final List<CardStackRow> rows, final CardStackRow row) {
|
||||||
int rowWidth = row.getWidth();
|
int rowWidth = row.getWidth();
|
||||||
while (!sourceRow.isEmpty()) {
|
|
||||||
final CardStack stack = sourceRow.get(0);
|
final Iterator itr = sourceRow.iterator();
|
||||||
|
|
||||||
|
while (itr.hasNext()) {
|
||||||
|
final CardStack stack = (CardStack) itr.next();
|
||||||
|
|
||||||
rowWidth += stack.getWidth();
|
rowWidth += stack.getWidth();
|
||||||
if (rowWidth > this.playAreaWidth) {
|
if (rowWidth > this.playAreaWidth) {
|
||||||
break;
|
break;
|
||||||
@@ -403,7 +408,8 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
|
|||||||
&& (((this.getRowsHeight(rows) - row.getHeight()) + stack.getHeight()) > this.playAreaHeight)) {
|
&& (((this.getRowsHeight(rows) - row.getHeight()) + stack.getHeight()) > this.playAreaHeight)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
row.add(sourceRow.remove(0));
|
row.add(stack);
|
||||||
|
itr.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user