06.05.2025, 12:00
(This post was last modified: 06.05.2025, 12:05 by routeconverter.)
Ich glaube, ich konnte es reproduzieren. Und in der Tat gibt es Code im RouteConverter, der dafür sorgt, dass nach einem Undo überhaupt etwas markiert ist. Wenn es den Code nicht gäbe, wäre nach einem Undo nämlich gar nichts markiert. Die JTable im Java Swing ist da ziemlich seltsam.
Was passiert nun beim Undo? Es wird die aktuelle Markierung erfaßt, das Undo durchgeführt, und die Markierung wiederhergestellt.
Beispiel fürs Undo vom Einfügen:
Wenn ich @purzel richtig verstehe, dann möchte er aber die vorherige Position 3 markiert haben.
Und da hat @WoMetz richtig erkannt: woher soll der Code denn wissen, was beim Undo passiert? Es könnte auch das Undo vom Löschen sein (dann sind lustigerweise die vorherige und die wiederhergestellte Position marktert). Die Information, was das Undo durchführt, steht beim Auslösen der Undo-Action leider nicht zur Verfügung. Das ist nur ein kleiner Schnipsel Code, der dem UndoManager sagt: mach mal rückgängig!
https://github.com/cpesch/RouteConverter...n.java#L43
Ja, man könnte jetzt versuchen, sich zu der Information durchzubohren und dann für jede der 24 Actions definieren, wie der Effekt auf die Markierung nach dem Undo und Redo wäre und das dann auf die Markierung nach einem Undo oder Redo anwenden. Ziemlich aufwändig.
PS: Ich akzeptiere Pull Requests, falls sich jemand die Zeit dafür nehmen möchte.
Was passiert nun beim Undo? Es wird die aktuelle Markierung erfaßt, das Undo durchgeführt, und die Markierung wiederhergestellt.
Beispiel fürs Undo vom Einfügen:
- Position 4 wird eingefügt und markiert
- Undo wird gedrückt
- Positionsnummer 4 wird vorgemerkt
- Die Position 4 wird gelöscht
- Die Position an der Positionsnummer 4 wird markiert - das ist die vorherige Position 5
Wenn ich @purzel richtig verstehe, dann möchte er aber die vorherige Position 3 markiert haben.
Und da hat @WoMetz richtig erkannt: woher soll der Code denn wissen, was beim Undo passiert? Es könnte auch das Undo vom Löschen sein (dann sind lustigerweise die vorherige und die wiederhergestellte Position marktert). Die Information, was das Undo durchführt, steht beim Auslösen der Undo-Action leider nicht zur Verfügung. Das ist nur ein kleiner Schnipsel Code, der dem UndoManager sagt: mach mal rückgängig!
https://github.com/cpesch/RouteConverter...n.java#L43
Ja, man könnte jetzt versuchen, sich zu der Information durchzubohren und dann für jede der 24 Actions definieren, wie der Effekt auf die Markierung nach dem Undo und Redo wäre und das dann auf die Markierung nach einem Undo oder Redo anwenden. Ziemlich aufwändig.
PS: Ich akzeptiere Pull Requests, falls sich jemand die Zeit dafür nehmen möchte.
--
Christian
Christian
