Undo movement jumps to end of list:
I don't if anyone else has had an issue with this, but one thing that I find mildly annoying with the User Interface is the way that the combat/non-com scroll bar (to the right of the listed moves) always jumps up to the latest manuever whenever you click "undo" for a given step. So often times, for example, I want to undo a series of combat or non-com moves (say 10, 11 and 12), but after I click undo for move 12, its autoscrolls back up to the top of the list, instead of just staying put so I can quickly undo 11 and 10 without having to scroll back down each time. In Revised and Classic the issue is less dramatic, though even there, in a turn with a lot of combat or non-Combat movements, I still notice the issue. I'm not sure if there is a simple way to fix this, but I think it would be nice.
Logged In: NO
I agree. It is very annoying and would be nice to see this fixed.
I've modified the file. Could a developer apply this patch.
I tested this in classic by opening the game and moving 15 of Russia units, then undoing. The scrollbar stayed where it should.
Index: UndoableMovesPanel.java
--- UndoableMovesPanel.java (revision 2293)
+++ UndoableMovesPanel.java (working copy)
@@ -31,6 +31,11 @@
private final GameData m_data;
private final MovePanel m_movePanel;
+ // Place scroll pane in class global scope so the inner undo class can record
+ // the position so we can go back to that place.
+ JScrollPane scroll;
+ Integer scrollBarPreviousValue = null;
+
public UndoableMovesPanel(GameData data, MovePanel movePanel)
{
m_data = data;
@@ -94,12 +99,15 @@
}
}
- JScrollPane scroll = new JScrollPane(items);
+ scroll = new JScrollPane(items);
scroll.setBorder(null);
scroll.getVerticalScrollBar().setUnitIncrement(scrollIncrement);
+ if (scrollBarPreviousValue != null) {
+ scroll.getVerticalScrollBar().setValue(scrollBarPreviousValue);
+ scrollBarPreviousValue = null;
+ }
-
add(scroll, BorderLayout.CENTER);
SwingUtilities.invokeLater(new Runnable()
{
@@ -176,6 +184,8 @@
public void actionPerformed(ActionEvent e)
{
+ // Record position of scroll bar as percentage.
+ scrollBarPreviousValue = scroll.getVerticalScrollBar().getValue();
m_movePanel.undoMove(m_moveIndex);
}
}
@@ -190,7 +200,7 @@
}
public void actionPerformed(ActionEvent e)
- {
+ {
m_movePanel.cancelMove();
if(!m_movePanel.getMap().isShowing(m_move.getRoute().getEnd()))
m_movePanel.getMap().centerOn(m_move.getRoute().getEnd());
Fix checked in for version 1.0.2.1
Fix checked in for version 1.0.2.1