mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
ensure card that last registered the cursor hover isn't tapped when the application loses focus via alt-tab and then is clicked on again
This commit is contained in:
@@ -45,7 +45,7 @@ public class CCommand implements ICDoc {
|
|||||||
|
|
||||||
private MouseMotionListener mmlCardOver = new MouseMotionAdapter() { @Override
|
private MouseMotionListener mmlCardOver = new MouseMotionAdapter() { @Override
|
||||||
public void mouseMoved(final MouseEvent e) {
|
public void mouseMoved(final MouseEvent e) {
|
||||||
cardoverAction(); } };
|
cardoverAction(e); } };
|
||||||
|
|
||||||
private final MouseListener madCardClick = new MouseAdapter() { @Override
|
private final MouseListener madCardClick = new MouseAdapter() { @Override
|
||||||
public void mousePressed(final MouseEvent e) {
|
public void mousePressed(final MouseEvent e) {
|
||||||
@@ -102,8 +102,8 @@ public class CCommand implements ICDoc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
private void cardoverAction() {
|
private void cardoverAction(MouseEvent e) {
|
||||||
final Card c = CCommand.this.view.getTabletop().getCardFromMouseOverPanel();
|
final Card c = CCommand.this.view.getTabletop().getHoveredCard(e);
|
||||||
if (c != null) {
|
if (c != null) {
|
||||||
CMatchUI.SINGLETON_INSTANCE.setCard(c);
|
CMatchUI.SINGLETON_INSTANCE.setCard(c);
|
||||||
}
|
}
|
||||||
@@ -114,7 +114,7 @@ public class CCommand implements ICDoc {
|
|||||||
// original version:
|
// original version:
|
||||||
// final Card c = t.getDetailController().getCurrentCard();
|
// final Card c = t.getDetailController().getCurrentCard();
|
||||||
// Roujin's bug fix version dated 2-12-2012
|
// Roujin's bug fix version dated 2-12-2012
|
||||||
final Card c = CCommand.this.view.getTabletop().getCardFromMouseOverPanel();
|
final Card c = CCommand.this.view.getTabletop().getHoveredCard(e);
|
||||||
|
|
||||||
if (c != null && c.isInZone(ZoneType.Command)) {
|
if (c != null && c.isInZone(ZoneType.Command)) {
|
||||||
//TODO: Cast commander/activate avatar/roll planar dice here.
|
//TODO: Cast commander/activate avatar/roll planar dice here.
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import java.util.Observable;
|
|||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
|
|
||||||
import forge.Card;
|
import forge.Card;
|
||||||
|
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Constant;
|
import forge.Constant;
|
||||||
import forge.Constant.Preferences;
|
import forge.Constant.Preferences;
|
||||||
@@ -40,8 +39,8 @@ import forge.control.input.Input;
|
|||||||
import forge.control.input.InputAttack;
|
import forge.control.input.InputAttack;
|
||||||
import forge.control.input.InputBlock;
|
import forge.control.input.InputBlock;
|
||||||
import forge.control.input.InputPayManaBase;
|
import forge.control.input.InputPayManaBase;
|
||||||
import forge.control.input.InputPayManaSimple;
|
|
||||||
import forge.control.input.InputPayManaExecuteCommands;
|
import forge.control.input.InputPayManaExecuteCommands;
|
||||||
|
import forge.control.input.InputPayManaSimple;
|
||||||
import forge.control.input.InputPaySacCost;
|
import forge.control.input.InputPaySacCost;
|
||||||
import forge.game.GameState;
|
import forge.game.GameState;
|
||||||
import forge.game.phase.CombatUtil;
|
import forge.game.phase.CombatUtil;
|
||||||
@@ -73,7 +72,7 @@ public class CField implements ICDoc {
|
|||||||
|
|
||||||
private MouseMotionListener mmlCardOver = new MouseMotionAdapter() { @Override
|
private MouseMotionListener mmlCardOver = new MouseMotionAdapter() { @Override
|
||||||
public void mouseMoved(final MouseEvent e) {
|
public void mouseMoved(final MouseEvent e) {
|
||||||
cardoverAction(); } };
|
cardoverAction(e); } };
|
||||||
|
|
||||||
private final MouseListener madHand = new MouseAdapter() { @Override
|
private final MouseListener madHand = new MouseAdapter() { @Override
|
||||||
public void mousePressed(final MouseEvent e) {
|
public void mousePressed(final MouseEvent e) {
|
||||||
@@ -382,8 +381,8 @@ public class CField implements ICDoc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
private void cardoverAction() {
|
private void cardoverAction(MouseEvent e) {
|
||||||
final Card c = CField.this.view.getTabletop().getCardFromMouseOverPanel();
|
final Card c = CField.this.view.getTabletop().getHoveredCard(e);
|
||||||
if (c != null) {
|
if (c != null) {
|
||||||
CMatchUI.SINGLETON_INSTANCE.setCard(c);
|
CMatchUI.SINGLETON_INSTANCE.setCard(c);
|
||||||
}
|
}
|
||||||
@@ -394,7 +393,7 @@ public class CField implements ICDoc {
|
|||||||
// original version:
|
// original version:
|
||||||
// final Card c = t.getDetailController().getCurrentCard();
|
// final Card c = t.getDetailController().getCurrentCard();
|
||||||
// Roujin's bug fix version dated 2-12-2012
|
// Roujin's bug fix version dated 2-12-2012
|
||||||
final Card c = CField.this.view.getTabletop().getCardFromMouseOverPanel();
|
final Card c = CField.this.view.getTabletop().getHoveredCard(e);
|
||||||
|
|
||||||
final Input input = CMessage.SINGLETON_INSTANCE.getInputControl().getInput();
|
final Input input = CMessage.SINGLETON_INSTANCE.getInputControl().getInput();
|
||||||
|
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ public class CHand implements ICDoc {
|
|||||||
if (e.getButton() != MouseEvent.BUTTON1) {
|
if (e.getButton() != MouseEvent.BUTTON1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Card c = view.getHandArea().getCardFromMouseOverPanel();
|
final Card c = view.getHandArea().getHoveredCard(e);
|
||||||
if (c != null) {
|
if (c != null) {
|
||||||
CMessage.SINGLETON_INSTANCE.getInputControl().selectCard(c, Singletons.getControl().getPlayer().getZone(ZoneType.Hand));
|
CMessage.SINGLETON_INSTANCE.getInputControl().selectCard(c, Singletons.getControl().getPlayer().getZone(ZoneType.Hand));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -559,13 +559,6 @@ public abstract class CardPanelContainer extends JPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return {@link forge.view.arcane.CardPanel}
|
|
||||||
*/
|
|
||||||
public final CardPanel getMouseOverPanel() {
|
|
||||||
return this.hoveredPanel;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* getCardFromMouseOverPanel.
|
* getCardFromMouseOverPanel.
|
||||||
@@ -573,12 +566,11 @@ public abstract class CardPanelContainer extends JPanel {
|
|||||||
*
|
*
|
||||||
* @return a {@link forge.Card} object.
|
* @return a {@link forge.Card} object.
|
||||||
*/
|
*/
|
||||||
public final Card getCardFromMouseOverPanel() {
|
public final Card getHoveredCard(MouseEvent e) {
|
||||||
if (this.hoveredPanel != null) {
|
// re-evaluate cursor position so if we hovered over a card, alt-tabbed out of the application, then
|
||||||
return this.hoveredPanel.getGameCard();
|
// clicked back on the application somewhere else, the last hovered card won't register the click
|
||||||
} else {
|
CardPanel p = getCardPanel(e.getX(), e.getY());
|
||||||
return null;
|
return (p == null && p == hoveredPanel) ? null : p.getGameCard();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user