- Attempting to remedy high CPU use when dragging around card panels.

This commit is contained in:
Agetian
2017-01-25 14:00:20 +00:00
parent 7416cc8fff
commit b45ae80f6e
3 changed files with 33 additions and 7 deletions

View File

@@ -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) {}
}
}

View File

@@ -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();

View File

@@ -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();
}
}
}