Skip to content

Commit

Permalink
AbilityPicker Empty Selection Error
Browse files Browse the repository at this point in the history
Do not call objectMouseClicked with an empty
selection.

Handle selection clamping in a ListSelectionListener.

Fixes #13148
  • Loading branch information
johannes-wolf committed Dec 25, 2024
1 parent 6b9532f commit 3894abf
Showing 1 changed file with 16 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import org.mage.card.arcane.ManaSymbols;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
Expand Down Expand Up @@ -152,7 +154,7 @@ private void initComponents() {
setBackgroundPainter(mwPanelPainter);

title = new ColorPane();
title.setFont(new Font("Times New Roman", 1, sizeMod(15)));
title.setFont(new Font("Times New Roman", Font.BOLD, sizeMod(15)));
title.setEditable(false);
title.setFocusCycleRoot(false);
title.setOpaque(false);
Expand Down Expand Up @@ -186,11 +188,14 @@ private void initComponents() {
rows.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent evt) {
if (SwingUtilities.isLeftMouseButton(evt)) {
if (SwingUtilities.isLeftMouseButton(evt) && !rows.isSelectionEmpty()) {
objectMouseClicked(evt);
}
}
});
}
});

rows.setSelectedIndex(0);
rows.setFont(new Font("Times New Roman", 1, sizeMod(17)));
rows.setBorder(BorderFactory.createEmptyBorder());
Expand Down Expand Up @@ -233,18 +238,16 @@ public void mousePressed(MouseEvent evt) {

@Override
public void mouseWheelMoved(MouseWheelEvent e) {
int notches = e.getWheelRotation();
int index = rows.getSelectedIndex();

if (notches < 0) {
if (index > 0) {
rows.setSelectedIndex(index - 1);
rows.repaint();
}
} else if (index < choices.size() - 1) {
rows.setSelectedIndex(index + 1);
rows.repaint();
int direction = e.getWheelRotation() < 0 ? -1 : +1;
int index = rows.getSelectedIndex() + direction;
if (index < 0) {
index = 0;
} else if (index >= choices.size()) {
index = choices.size() - 1;
}

rows.setSelectedIndex(index);
rows.repaint();
}

private void objectMouseClicked(MouseEvent event) {
Expand Down

0 comments on commit 3894abf

Please sign in to comment.