You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pivot.apache.org by "Roger Whitcomb (JIRA)" <ji...@apache.org> on 2018/01/05 19:17:00 UTC

[jira] [Comment Edited] (PIVOT-1021) Undo after delete in TextPane can cause IllegalArgumentException

    [ https://issues.apache.org/jira/browse/PIVOT-1021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16313691#comment-16313691 ] 

Roger Whitcomb edited comment on PIVOT-1021 at 1/5/18 7:16 PM:
---------------------------------------------------------------

Yes sure enough:
* type some stuff
* highlight the last three letters of a word at the end of the line
* Ctrl-X to delete then Ctrl-Z to undo:
* This is weird, because the last thing that happened was a delete, yet the Undo is of an insert.  So, the delete of the partial block never got recorded for undo purposes.
java.lang.IndexOutOfBoundsException: Index + count 14,1 out of bounds [0,13].
STACK TRACE:
at org.apache.pivot.util.Utils.checkIndexBounds(Utils.java:268)
at org.apache.pivot.wtk.text.Element.removeRange(Element.java:154)
at org.apache.pivot.wtk.TextPane$RangeInsertedEdit.undo(TextPane.java:154)
at org.apache.pivot.wtk.TextPane.undo(TextPane.java:808)
at org.apache.pivot.wtk.skin.TextPaneSkin.keyPressed(TextPaneSkin.java:1332)
at org.apache.pivot.wtk.Component$ComponentKeyListenerList.lambda$keyPressed$1(Component.java:527)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.apache.pivot.wtk.Component$ComponentKeyListenerList.keyPressed(Component.java:527)
at org.apache.pivot.wtk.Component.keyPressed(Component.java:2779)
at org.apache.pivot.wtk.ApplicationContext$DisplayHost.processKeyEvent(ApplicationContext.java:1566)
at java.awt.Component.processEvent(Component.java:6310)
at org.apache.pivot.wtk.ApplicationContext$DisplayHost.processEvent(ApplicationContext.java:945)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
at java.awt.Component.dispatchEventImpl(Component.java:4760)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)



was (Author: rwhitcomb):
Yes sure enough:
* type some stuff
* highlight the last three letters of a word at the end of the line
* Ctrl-X to delete then Ctrl-Z to undo:
java.lang.IndexOutOfBoundsException: Index + count 14,1 out of bounds [0,13].
STACK TRACE:
at org.apache.pivot.util.Utils.checkIndexBounds(Utils.java:268)
at org.apache.pivot.wtk.text.Element.removeRange(Element.java:154)
at org.apache.pivot.wtk.TextPane$RangeInsertedEdit.undo(TextPane.java:154)
at org.apache.pivot.wtk.TextPane.undo(TextPane.java:808)
at org.apache.pivot.wtk.skin.TextPaneSkin.keyPressed(TextPaneSkin.java:1332)
at org.apache.pivot.wtk.Component$ComponentKeyListenerList.lambda$keyPressed$1(Component.java:527)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.apache.pivot.wtk.Component$ComponentKeyListenerList.keyPressed(Component.java:527)
at org.apache.pivot.wtk.Component.keyPressed(Component.java:2779)
at org.apache.pivot.wtk.ApplicationContext$DisplayHost.processKeyEvent(ApplicationContext.java:1566)
at java.awt.Component.processEvent(Component.java:6310)
at org.apache.pivot.wtk.ApplicationContext$DisplayHost.processEvent(ApplicationContext.java:945)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
at java.awt.Component.dispatchEventImpl(Component.java:4760)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


> Undo after delete in TextPane can cause IllegalArgumentException
> ----------------------------------------------------------------
>
>                 Key: PIVOT-1021
>                 URL: https://issues.apache.org/jira/browse/PIVOT-1021
>             Project: Pivot
>          Issue Type: Bug
>          Components: wtk
>            Reporter: Roger Whitcomb
>            Assignee: Roger Whitcomb
>            Priority: Minor
>
> Under various conditions (such as selecting an entire word that is a TextSpan) deleting it with Ctrl/Cmd-X then Undo (Ctrl/Cmd-Z) causes an IllegalArgumentException:
> java.lang.IllegalArgumentException: Child node must be an instance of org.apache.pivot.wtk.text.Block
> STACK TRACE:
> at org.apache.pivot.wtk.text.Document.insert(Document.java:45)
> at org.apache.pivot.wtk.text.Element.add(Element.java:369)
> at org.apache.pivot.wtk.TextPane$RangeRemovedEdit.undo(TextPane.java:134)
> at org.apache.pivot.wtk.TextPane.undo(TextPane.java:796)
> at org.apache.pivot.wtk.skin.TextPaneSkin.keyPressed(TextPaneSkin.java:1360)
> at org.apache.pivot.wtk.Component$ComponentKeyListenerList.lambda$keyPressed$1(Component.java:477)
> at java.lang.Iterable.forEach(Unknown Source)
> at org.apache.pivot.wtk.Component$ComponentKeyListenerList.keyPressed(Component.java:477)
> at org.apache.pivot.wtk.Component.keyPressed(Component.java:2711)
> at org.apache.pivot.wtk.ApplicationContext$DisplayHost.processKeyEvent(ApplicationContext.java:1566)
> at java.awt.Component.processEvent(Unknown Source)
> at org.apache.pivot.wtk.ApplicationContext$DisplayHost.processEvent(ApplicationContext.java:945)
> at java.awt.Component.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> ...
> Or sometimes an IndexOutOfBoundsException can occur instead (such as doing a second Undo right after the first).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)