zxcalc / quantomatic

Quantomatic is a tool for doing automated graph rewriting.
http://quantomatic.github.io
152 stars 22 forks source link

Sometimes key board short cuts don't work #171

Closed rossduncan closed 6 years ago

rossduncan commented 6 years ago

Sometimes keyboard shortcuts don't work, and instead we get a lovely stack trace in the console. At present I'm not able to reproduce this bug reliably. Here's the whole stack trace.

[error] Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
[error]         at quanto.gui.histview.HistView$$anonfun$computeItemWidth$2.apply(HistView.scala:27)
[error]         at quanto.gui.histview.HistView$$anonfun$computeItemWidth$2.apply(HistView.scala:26)
[error]         at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
[error]         at scala.collection.Iterator$class.foreach(Iterator.scala:893)
[error]         at scala.swing.ListView$$anon$1$$anon$4.foreach(ListView.scala:161)
[error]         at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
[error]         at scala.swing.ListView$$anon$1.foreach(ListView.scala:159)
[error]         at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732)
[error]         at quanto.gui.histview.HistView.computeItemWidth(HistView.scala:26)
[error]         at quanto.gui.histview.HistView$$anon$1.componentFor(HistView.scala:37)
[error]         at quanto.gui.histview.HistView$$anon$1.componentFor(HistView.scala:33)
[error]         at scala.swing.ListView$Renderer$$anon$9.getListCellRendererComponent(ListView.scala:74)
[error]         at scala.swing.ListView$Renderer$$anon$9.getListCellRendererComponent(ListView.scala:72)
[error]         at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1361)
[error]         at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1311)
[error]         at javax.swing.plaf.basic.BasicListUI$Handler.valueChanged(BasicListUI.java:2623)
[error]         at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
[error]         at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
[error]         at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
[error]         at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405)
[error]         at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415)
[error]         at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459)
[error]         at javax.swing.DefaultListSelectionModel.addSelectionInterval(DefaultListSelectionModel.java:497)
[error]         at javax.swing.JList.setSelectedIndices(JList.java:2235)
[error]         at scala.swing.ListView.selectIndices(ListView.scala:241)
[error]         at quanto.gui.histview.HistView.selectedNode_$eq(HistView.scala:45)
[error]         at quanto.gui.DerivationController.state_$eq(DerivationController.scala:44)
[error]         at quanto.gui.DerivationDocument.root_$eq(DerivationDocument.scala:59)
[error]         at quanto.gui.QuantoDerive$$anon$2$$anon$45.apply(QuantoDerive.scala:647)
[error]         at scala.swing.Action$$anon$1.actionPerformed(Action.scala:78)
[error]         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
[error]         at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
[error]         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
[error]         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
[error]         at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
[error]         at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
[error]         at javax.swing.plaf.basic.BasicMenuItemUI$Actions.actionPerformed(BasicMenuItemUI.java:802)
[error]         at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1663)
[error]         at javax.swing.JComponent.processKeyBinding(JComponent.java:2882)
[error]         at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:699)
[error]         at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:706)
[error]         at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:706)
[error]         at javax.swing.JMenuBar.processKeyBinding(JMenuBar.java:677)
[error]         at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:307)
[error]         at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:293)
[error]         at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2974)
[error]         at javax.swing.JComponent.processKeyBindings(JComponent.java:2966)
[error]         at javax.swing.JComponent.processKeyEvent(JComponent.java:2845)
[error]         at java.awt.Component.processEvent(Component.java:6310)
[error]         at java.awt.Container.processEvent(Container.java:2236)
[error]         at java.awt.Component.dispatchEventImpl(Component.java:4889)
[error]         at java.awt.Container.dispatchEventImpl(Container.java:2294)
[error]         at java.awt.Component.dispatchEvent(Component.java:4711)
[error]         at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
[error]         at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
[error]         at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
[error]         at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
[error]         at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
[error]         at java.awt.Component.dispatchEventImpl(Component.java:4760)
[error]         at java.awt.Container.dispatchEventImpl(Container.java:2294)
[error]         at java.awt.Window.dispatchEventImpl(Window.java:2746)
[error]         at java.awt.Component.dispatchEvent(Component.java:4711)
[error]         at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
[error]         at java.awt.EventQueue.access$500(EventQueue.java:97)
[error]         at java.awt.EventQueue$3.run(EventQueue.java:709)
[error]         at java.awt.EventQueue$3.run(EventQueue.java:703)
[error]         at java.security.AccessController.doPrivileged(Native Method)
[error]         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
[error]         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
[error]         at java.awt.EventQueue$4.run(EventQueue.java:731)
[error]         at java.awt.EventQueue$4.run(EventQueue.java:729)
[error]         at java.security.AccessController.doPrivileged(Native Method)
[error]         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
[error]         at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
[error]         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
[error]         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
[error]         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
[error]         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
[error]         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
[error]         at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
[error] Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
[error]         at quanto.gui.histview.HistView$$anonfun$computeItemWidth$2.apply(HistView.scala:27)
[error]         at quanto.gui.histview.HistView$$anonfun$computeItemWidth$2.apply(HistView.scala:26)
[error]         at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
[error]         at scala.collection.Iterator$class.foreach(Iterator.scala:893)
[error]         at scala.swing.ListView$$anon$1$$anon$4.foreach(ListView.scala:161)
rossduncan commented 6 years ago

It seems to affect the "start derivation" short cut -- others seem to be OK

hmillerbakewell commented 6 years ago

I am hoping this is related to a bug involving opening derivations generally, not just from keyboard shortcuts. Build c81645794cd23c30f13573d29be7fadd3303691f seems to have fixed the new derivation issue (the build targeted a bug in how tabs were created and referenced) but please try and recreate it.

If the bug is still occurring, please could you verify that it is the keyboard shortcut that's the issue and not creating new derivations generally. Also an example of the graph you were creating a derivation from would be useful.

hmillerbakewell commented 6 years ago

The UI has been reworked since this bug was reported and this bug cannot be reproduced. Please re-open or create new a new issue if this persists after the next major update (expected before 2018-05-07)