mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
- Attempting to remedy high CPU use when dragging around card panels.
This commit is contained in:
@@ -492,10 +492,13 @@ public class TargetingOverlay {
|
||||
// An "initialized"-type variable is needed since we can't initialize on construction
|
||||
// (because CardPanelContainers aren't ready at that point)
|
||||
private boolean isListening = false;
|
||||
private boolean isDragged = false;
|
||||
public boolean getIsListening() { return isListening; }
|
||||
public void setIsListening(boolean listening) { isListening = listening; }
|
||||
|
||||
private void assembleAndRepaint() {
|
||||
if (isDragged) { return; }
|
||||
|
||||
final GameView gameView = matchUI.getGameView();
|
||||
if (gameView != null) {
|
||||
assembleArcs(gameView.getCombat(), true); // Force update despite timer
|
||||
@@ -514,16 +517,19 @@ public class TargetingOverlay {
|
||||
public void mouseOut(CardPanel panel, MouseEvent evt) {
|
||||
assembleAndRepaint();
|
||||
}
|
||||
|
||||
// Do not aggressively assemble/repaint when dragging around card panels
|
||||
@Override
|
||||
public void mouseDragStart(CardPanel dragPanel, MouseEvent evt) { isDragged = true; }
|
||||
@Override
|
||||
public void mouseDragEnd(CardPanel dragPanel, MouseEvent evt) { isDragged = false; }
|
||||
|
||||
// We don't need the other mouse events the interface provides; stub them out
|
||||
@Override
|
||||
public void mouseLeftClicked(CardPanel panel, MouseEvent evt) {}
|
||||
@Override
|
||||
public void mouseRightClicked(CardPanel panel, MouseEvent evt) {}
|
||||
@Override
|
||||
public void mouseDragStart(CardPanel dragPanel, MouseEvent evt) {}
|
||||
@Override
|
||||
public void mouseDragged(CardPanel dragPanel, int dragOffsetX, int dragOffsetY, MouseEvent evt) {}
|
||||
@Override
|
||||
public void mouseDragEnd(CardPanel dragPanel, MouseEvent evt) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
|
||||
private int actualCardsPerRow;
|
||||
private int mouseDragStartX;
|
||||
private int mouseDragStartY;
|
||||
private boolean isDragged;
|
||||
private boolean isVertical;
|
||||
private boolean hasScrollbars;
|
||||
|
||||
@@ -222,7 +223,9 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
|
||||
this.getParent().validate();
|
||||
}
|
||||
|
||||
super.doLayout();
|
||||
if (!isDragged) {
|
||||
super.doLayout();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -237,6 +240,9 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
|
||||
|
||||
@Override
|
||||
public final void mouseDragStart(final CardPanel dragPanel, final MouseEvent evt) {
|
||||
this.isDragged = true;
|
||||
super.setDragged(true);
|
||||
|
||||
super.mouseDragStart(dragPanel, evt);
|
||||
|
||||
this.mouseDragStartX = dragPanel.getCardX();
|
||||
@@ -284,6 +290,9 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
|
||||
|
||||
@Override
|
||||
public final void mouseDragEnd(final CardPanel dragPanel, final MouseEvent evt) {
|
||||
this.isDragged = false;
|
||||
super.setDragged(false);
|
||||
|
||||
super.mouseDragEnd(dragPanel, evt);
|
||||
this.doLayout();
|
||||
final JLayeredPane layeredPane = SwingUtilities.getRootPane(CardPanel.getDragAnimationPanel()).getLayeredPane();
|
||||
|
||||
@@ -63,6 +63,7 @@ public abstract class CardPanelContainer extends SkinnedPanel {
|
||||
private int mouseDragOffsetX, mouseDragOffsetY;
|
||||
private int intialMouseDragX = -1, intialMouseDragY;
|
||||
private boolean dragEnabled;
|
||||
private boolean isDragged;
|
||||
|
||||
private final List<LayoutEventListener> layoutListeners = new ArrayList<>(1);
|
||||
|
||||
@@ -364,6 +365,14 @@ public abstract class CardPanelContainer extends SkinnedPanel {
|
||||
this.dragEnabled = dragEnabled;
|
||||
}
|
||||
|
||||
public final boolean isDragged() {
|
||||
return this.isDragged;
|
||||
}
|
||||
|
||||
public final void setDragged(boolean isDragged) {
|
||||
this.isDragged = isDragged;
|
||||
}
|
||||
|
||||
public final void addCardPanelMouseListener(final CardPanelMouseListener listener) {
|
||||
this.listeners.add(listener);
|
||||
}
|
||||
@@ -429,8 +438,10 @@ public abstract class CardPanelContainer extends SkinnedPanel {
|
||||
|
||||
private void doingLayout() {
|
||||
// Inform listeners we're doing layout
|
||||
for (LayoutEventListener listener : layoutListeners) {
|
||||
listener.doingLayout();
|
||||
if (!this.isDragged) {
|
||||
for (LayoutEventListener listener : layoutListeners) {
|
||||
listener.doingLayout();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user