diff --git a/forge-gui-desktop/src/main/java/forge/view/FDialog.java b/forge-gui-desktop/src/main/java/forge/view/FDialog.java index 0d77ab065b1..031c47f8b50 100644 --- a/forge-gui-desktop/src/main/java/forge/view/FDialog.java +++ b/forge-gui-desktop/src/main/java/forge/view/FDialog.java @@ -305,6 +305,10 @@ public class FDialog extends SkinnedDialog implements ITitleBarOwner, KeyEventDi getRootPane().setCursor(Cursor.getPredefinedCursor(resizeCursor0)); } + public boolean isResizing() { + return sizeBeforeResize != null; + } + private void addResizeSupport() { final JRootPane resizeBorders = getRootPane(); resizeBorders.addMouseListener(new MouseAdapter() { diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/CardArea.java b/forge-gui-desktop/src/main/java/forge/view/arcane/CardArea.java index e92971363cf..9d0bd2a51e6 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/CardArea.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/CardArea.java @@ -97,7 +97,7 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen } @Override - public final void doLayout() { + public void doLayout() { if (this.getCardPanels().isEmpty()) { return; } diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingCardArea.java b/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingCardArea.java index 23eb7be50bf..d693d1ecf51 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingCardArea.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingCardArea.java @@ -41,12 +41,14 @@ import forge.view.FFrame; import java.awt.Component; import java.awt.Point; import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.List; - import javax.swing.ScrollPaneConstants; +import javax.swing.Timer; public class FloatingCardArea extends CardArea { @@ -284,6 +286,29 @@ public class FloatingCardArea extends CardArea { } } + @Override + public void doLayout() { + if (window.isResizing()) { + //delay layout slightly to reduce flicker during window resize + layoutTimer.restart(); + } + else { + finishDoLayout(); + } + } + + final Timer layoutTimer = new Timer(250, new ActionListener() { + @Override + public void actionPerformed(ActionEvent arg0) { + layoutTimer.stop(); + finishDoLayout(); + } + }); + + private void finishDoLayout() { + super.doLayout(); + } + @Override public final void mouseOver(final CardPanel panel, final MouseEvent evt) { CMatchUI.SINGLETON_INSTANCE.setCard(panel.getCard(), evt.isShiftDown()); diff --git a/forge-gui/CHANGES.txt b/forge-gui/CHANGES.txt index baff0b67e25..30934e4c08f 100644 --- a/forge-gui/CHANGES.txt +++ b/forge-gui/CHANGES.txt @@ -22,6 +22,7 @@ Clicking the zone icon under a player's avatar will now hide the zone window if After the last card is removed from a zone window, that window will now automatically be hidden. An example of this would be casting the last card in the Flashback zone. Default size of zone windows has been slightly reduced. Prevent horizontal scrollbar appearing in zone windows. +Reduce flicker when resizing zone windows --------- New Cards