typedb / typedb-studio

TypeDB Studio (IDE)
https://typedb.com
Mozilla Public License 2.0
191 stars 43 forks source link

Fatal error when undoing with cmd+z #754

Open james-whiteside opened 1 year ago

james-whiteside commented 1 year ago

Description

Got the following when mashing cmd+z:

Title: Cannot coerce value to an empty range: maximum 3 is less than minimum 4.
Trace: java.lang.IllegalArgumentException: Cannot coerce value to an empty range: maximum 3 is less than minimum 4.
    at kotlin.ranges.RangesKt___RangesKt.coerceIn(_Ranges.kt:1617)
    at com.vaticle.typedb.studio.framework.editor.TextRendering.invalidate(TextRendering.kt:58)
    at com.vaticle.typedb.studio.framework.editor.TextProcessor$Writable.applyChange(TextProcessor.kt:383)
    at com.vaticle.typedb.studio.framework.editor.TextProcessor$Writable.applyChange$default(TextProcessor.kt:381)
    at com.vaticle.typedb.studio.framework.editor.TextProcessor$Writable.applyReplay(TextProcessor.kt:372)
    at com.vaticle.typedb.studio.framework.editor.TextProcessor$Writable.undo(TextProcessor.kt:364)
    at com.vaticle.typedb.studio.framework.editor.EventHandler.executeEditorCommand(EventHandler.kt:175)
    at com.vaticle.typedb.studio.framework.editor.EventHandler.handleEditorEvent-ZmokQxo$framework_editor_editor(EventHandler.kt:113)
    at com.vaticle.typedb.studio.framework.editor.TextEditor$Layout$3$2$4.invoke-ZmokQxo(TextEditor.kt:295)
    at com.vaticle.typedb.studio.framework.editor.TextEditor$Layout$3$2$4.invoke(TextEditor.kt:295)
    at androidx.compose.ui.input.key.KeyInputModifier.propagateKeyEvent-ZmokQxo(KeyInputModifier.kt:124)
    at androidx.compose.ui.input.key.KeyInputModifier.processKeyInput-ZmokQxo(KeyInputModifier.kt:103)
    at androidx.compose.ui.platform.SkiaBasedOwner.sendKeyEvent-ZmokQxo(SkiaBasedOwner.skiko.kt:231)
    at androidx.compose.ui.ComposeScene.sendKeyEvent-ZmokQxo(ComposeScene.skiko.kt:572)
    at androidx.compose.ui.awt.ComposeLayer$onKeyEvent$1.invoke(ComposeLayer.desktop.kt:410)
    at androidx.compose.ui.awt.ComposeLayer$onKeyEvent$1.invoke(ComposeLayer.desktop.kt:406)
    at androidx.compose.ui.awt.ComposeLayer.catchExceptions(ComposeLayer.desktop.kt:109)
    at androidx.compose.ui.awt.ComposeLayer.onKeyEvent(ComposeLayer.desktop.kt:406)
    at androidx.compose.ui.awt.ComposeLayer.access$onKeyEvent(ComposeLayer.desktop.kt:87)
    at androidx.compose.ui.awt.ComposeLayer$7.keyPressed(ComposeLayer.desktop.kt:385)
    at java.desktop/java.awt.Component.processKeyEvent(Component.java:6593)
    at java.desktop/java.awt.Component.processEvent(Component.java:6412)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5011)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
    at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1950)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:870)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1139)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1009)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:835)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4892)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Environment

  1. TypeDB version: 2.18.0
  2. OS of TypeDB server: MacOS 12.6.1
  3. Studio version: 83056b164cf7882d00f847ffcd06ec7e9f43608e
  4. OS of Studio: MacOS 12.6.1
cxdorn commented 1 year ago

Adding to this issue, I generally get performance issues (freeze, slow-down) when undoing changes cmd+z. Sometimes changes are undone in the wrong order as well (i.e. certain edits are skipped or re-ordered).