Open
Description
JabRef version
Latest development branch build (please note build date below)
Operating system
GNU / Linux
Details on version and operating system
openSUSE Tumbleweed
Checked with the latest development build (copy version output from About dialog)
- I made a backup of my libraries before testing the latest development version.
- I have tested the latest development version and the problem persists
Steps to reproduce the behaviour
- Show group icons in the entry table.
- Create a group using a free search expression, and choose an icon for the group.
- => The icon appears on matching entries in the table.
- Select a matching entry that has no data in the groups field.
- Select the groups field and add text that prevents the entry from matching the search-group. Add only one group, without typing the separator character.
- => The group icon still appears even though the entry no longer matches the search
- Type the separator character in the groups field.
- => The unexpected icon disappears and does not reappear again unless the entry is changed to once again match the search criteria.
Basically, the group icons don't "refresh" until a separator is typed in the previously empty groups field.
I don't know if the search criteria matter, but this is an example of the search-group that brought the issue to my attention: groups!=one AND file!=.pdf NOT groups=two NOT groups=three
The icon also remains after a PDF is added to the entry, unless I type a separator in the groups field, triggering an update. This only happens with entries that contain no data in the groups field.
There are some InputMismatchException
errors in the log.
Appendix
Log
JabRef 100.0.0
Linux 6.15.0-1-default amd64
Java 24.0.1
JavaFX 24.0.1+4
Search query Parsing error
org.antlr.v4.runtime.InputMismatchException
at org.antlr.antlr4.runtime@4.13.2/org.antlr.v4.runtime.BailErrorStrategy.recoverInline(BailErrorStrategy.java:61)
at org.jabref.jablib/org.jabref.search.SearchParser.searchValue(SearchParser.java:625)
at org.jabref.jablib/org.jabref.search.SearchParser.comparison(SearchParser.java:503)
at org.jabref.jablib/org.jabref.search.SearchParser.expression(SearchParser.java:396)
at org.jabref.jablib/org.jabref.search.SearchParser.expression(SearchParser.java:424)
at org.jabref.jablib/org.jabref.search.SearchParser.andExpression(SearchParser.java:221)
at org.jabref.jablib/org.jabref.search.SearchParser.start(SearchParser.java:150)
at org.jabref.jablib/org.jabref.model.search.query.SearchQuery.getStartContext(SearchQuery.java:100)
at org.jabref.jablib/org.jabref.model.search.query.SearchQuery.<init>(SearchQuery.java:36)
at org.jabref.jablib/org.jabref.model.search.query.SearchQuery.<init>(SearchQuery.java:29)
at org.jabref/org.jabref.gui.entryeditor.SourceTab.highlightSearchPattern(SourceTab.java:127)
at javafx.graphics@24.0.1/com.sun.javafx.application.PlatformImpl.lambda$runLater$4(PlatformImpl.java:419)
at javafx.graphics@24.0.1/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at javafx.graphics@24.0.1/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics@24.0.1/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$1(GtkApplication.java:240)
at java.base/java.lang.Thread.run(Thread.java:1447)
Search query Parsing error
org.antlr.v4.runtime.InputMismatchException
at org.antlr.antlr4.runtime@4.13.2/org.antlr.v4.runtime.BailErrorStrategy.recoverInline(BailErrorStrategy.java:61)
at org.jabref.jablib/org.jabref.search.SearchParser.searchValue(SearchParser.java:625)
at org.jabref.jablib/org.jabref.search.SearchParser.comparison(SearchParser.java:503)
at org.jabref.jablib/org.jabref.search.SearchParser.expression(SearchParser.java:396)
at org.jabref.jablib/org.jabref.search.SearchParser.expression(SearchParser.java:424)
at org.jabref.jablib/org.jabref.search.SearchParser.andExpression(SearchParser.java:221)
at org.jabref.jablib/org.jabref.search.SearchParser.start(SearchParser.java:150)
at org.jabref.jablib/org.jabref.model.search.query.SearchQuery.getStartContext(SearchQuery.java:100)
at org.jabref.jablib/org.jabref.model.search.query.SearchQuery.<init>(SearchQuery.java:36)
at org.jabref/org.jabref.gui.search.GlobalSearchBar.updateSearchQuery(GlobalSearchBar.java:372)
at reactfx@2.0-M5-module/org.reactfx.util.FxTimer.lambda$restart$0(FxTimer.java:89)
at javafx.graphics@24.0.1/com.sun.scenario.animation.shared.TimelineClipCore.visitKeyFrame(TimelineClipCore.java:239)
at javafx.graphics@24.0.1/com.sun.scenario.animation.shared.TimelineClipCore.playTo(TimelineClipCore.java:180)
at javafx.graphics@24.0.1/javafx.animation.Timeline.doPlayTo(Timeline.java:172)
at javafx.graphics@24.0.1/javafx.animation.AnimationAccessorImpl.playTo(AnimationAccessorImpl.java:39)
at javafx.graphics@24.0.1/com.sun.scenario.animation.shared.SingleLoopClipEnvelope.timePulse(SingleLoopClipEnvelope.java:103)
at javafx.graphics@24.0.1/javafx.animation.Animation.doTimePulse(Animation.java:1234)
at javafx.graphics@24.0.1/javafx.animation.Animation$1.timePulse(Animation.java:190)
at javafx.graphics@24.0.1/com.sun.scenario.animation.AbstractPrimaryTimer.timePulseImpl(AbstractPrimaryTimer.java:316)
at javafx.graphics@24.0.1/com.sun.scenario.animation.AbstractPrimaryTimer$MainLoop.run(AbstractPrimaryTimer.java:239)
at javafx.graphics@24.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:588)
at javafx.graphics@24.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:572)
at javafx.graphics@24.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(QuantumToolkit.java:565)
at javafx.graphics@24.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$6(QuantumToolkit.java:346)
at javafx.graphics@24.0.1/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at javafx.graphics@24.0.1/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics@24.0.1/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$1(GtkApplication.java:240)
at java.base/java.lang.Thread.run(Thread.java:1447)