Little worried about the ListView/TreeView/TableView classes
John Hendrikx
hjohn at xs4all.nl
Tue Jul 10 10:38:23 PDT 2012
Hi Jonathan,
I'll do what can to help get some of these resolved, so I have filed
three new issues (all using the same sample code), RT-23331, RT-23332
and RT-23333 which address three of the problems below. Some of the
others I already created issues for, the most critical of those (causing
graphics glitches) is a solution for this one:
RT-22555 Unpredictable behaviour with scrollTo and the view classes
(TableView as example)
It causes rendering to fail -- for Scenes that are fairly static this
can mean some controls are simply invisible until the user tries
interacting with them. The provided sample is brute-force code to get
this to occur, but it happens in normal use of my app (especially when
only layout is changed and some controls are swapped out, ie, a TreeView
becomes a TableView to show items in 2 columns -- in those cases all
data is loaded already and the change can happen very fast -- when more
processing still needs to occur (like images being loaded causing item
changes) it doesn't happen.. or it simple hides the problem because of a
redraw occuring).
Then there several issues dealing with Cell creation:
RT-22946 TreeView creates cells for every item from start to scrollTo
position
RT-20892 Layout pass of TreeView can result in unneccessary recreation
of TreeCells
RT-20616 TreeView creates new cells every time root is changed
The first one is the most problematic because it creates lots of cells
but more importantly.. *different* cells. The other two are less of a
problem since atleast they donot cause data to be accessed that is not
going to be displayed.
The issue with creation of a ListView and using it immediately (with
select/focus/scrollTo calls) is captured a bit in RT-22555 as well I
think, resolving that will probably resolve these issues as well.
And there's two minor issues I filed related to these classes as well:
RT-20879 After setting new root on TreeView, focus model's focused item
property is not updated
RT-22398 Some navigation keys (pg-down/up, etc) donot work until
TreeView/ListView/TableView item has both focus AND is selected
For some of these it is rather hard to create good small test programs
-- there appear to be timing issues with some of them (whether the
ListView has already been rendered atleast once or not yet, and/or
whether it was added to a Scene or not). Sometimes putting things like
select/focus/scrollTo in a Platform.runLater() makes the issue worse or
better.
I can provide help in the form of trying to write test cases for
problems that you cannot reproduce at all. The three most annoying bugs
are:
RT-22555 (causes graphic glitches)
RT-22946 (makes large lists slow to display when scrolling to a high
index in the list when restoring last cursor position)
RT-23331 (graphics glitch where user cannot see the highlighted item)
The rest are annoying but only waste some resources or are minor gfx
glitches or have work-arounds.
If there is anything I can do to make these easier to solve, I can work
on that in the weekend/evenings. I'll upgrade to the latest beta
tonight to see if any of them happened to have been resolved.
--John
On 10/07/2012 01:02, Jonathan Giles wrote:
> I'm happy to help work through these issues to try to find fixes
> (which may be able to get into 2.2) or find workarounds, although it
> is probably easier to have a discussion on each of the jira issue
> pages, rather than grouped together in an email (both for ease of
> discussion, and so we can have a record of what was said).
>
> Chances are all these bugs are already assigned to me. If so, lets
> start working through these right away. If not, email me the bug
> report numbers and I'll add myself as a watcher (or take ownership of
> them as they are likely my bugs anyway).
>
> -- Jonathan
>
> On 10/07/2012 10:51 a.m., John Hendrikx wrote:
>> My program relies extensively on the *View classes, however, there
>> are numerous little problems with these (JavaFX 2.2b13) that I'm
>> considering rewriting these controls myself to "take control" and
>> being able to fix problems.
>>
>> Many of the issues I've reported as bugs, which are all in the
>> process of being deferred to JFX3.0 (if I understand correctly),
>> which is scheduled for over a year from now.
>>
>> Here is a list of problems I've been running into just this past week
>> -- and I've reported several others. Most of these apply to any of
>> the *View classes, but some may be specific to one of the types.
>>
>> - Calling requestFocus() behaves differently from clicking with
>> mouse/tabbing when
>> using only keyboard navigation:
>>
>> Left Mouse Click:
>> Current focusowner : VirtualFlow[id=virtual-flow, styleClass=]
>> Current focusowner : ListView[id=null, styleClass=list-view]
>>
>> Tabbing to it:
>> Current focusowner : ListView[id=null, styleClass=list-view]
>>
>> Programmatic requestFocus() immediately after ListView added to Scene:
>> Current focusowner : ListView at 1966198[styleClass=list-view]
>>
>> Why is it not the same? This seems to be causing issues sometimes
>> where the ListView
>> is not properly activated and it is not accepting keyboard input
>> (despite being the
>> focusowner as printed above).
>>
>> - Sometimes ListView starts highlighting every Xth cell when
>> scrolling through list
>>
>> Scrolling through a ListView using the cursor keys one can get the
>> ListView stuck to
>> highlighting only the Xth cell (where X seems to be in the range of
>> the number of active
>> Cells). When there is only few items in the list this bug manifests
>> itself as not
>> changing the focus of the item at all (ie, the wrong cell is
>> highlighted). Usually a
>> mouse click on a random item fixes this bug again, but sometimes even
>> that doesn't work.
>>
>> This bug is incredibly hard to reproduce but the frequency of it can
>> be increased
>> by using a ScrollBar Skin that breaks the rule that getNode() should
>> always return the
>> same item. It however happens with the default ScrollBar Skin as
>> well, just much much
>> rarer. I have a test case with a contract-breaking ScrollBar Skin
>> that manages to
>> reproduce it almost every time.
>>
>> - Page up broken when used at bottom of ListView
>>
>> Scroll down fully with page down. Now page up, notice that it goes
>> up one page, but the
>> next page up only goes up one item for a few times (about a page
>> worth of items) before
>> starting to act like a real page up again.
>>
>> - Pressing Cursor Left/Right on an active ListView changes focus
>> despite keys being consumed
>>
>> Despite having a handler in setOnKeyPressed that consumes the Cursor
>> keys (to do something
>> useful with them) the focus still also changes (ie, it triggers my
>> action AND affects
>> a focus change). I can block them with an EventFilter, but would
>> rather allow users of
>> my custom control to still being able to register these keys for
>> special purposes...
>>
>> - Numerous scrollTo bugs
>>
>> Poor centering when scrolling to an item (sometimes even outside view
>> port); not responding
>> at all when called at inoppertune times (right after populating and
>> adding to scene); unable
>> to precisely save/restore view position; creating cells for every
>> item from 0 to item being
>> scrolled to... and recently (since 2.2betas) completely failure to
>> draw the ListView at all
>> (can take various forms, only scrollbars drawn, somtimes the entire
>> container is missing).
>> Restores itself on any ListView redrawing activity, like selecting
>> cell, scrolling with cursor
>> keys, etc..
>>
>> - Numerous focus/select bugs
>>
>> Similar to above, when these things occur in rapid succession
>> (ListView added to Scene,
>> populated, correct item selected, scrolled to saved position) it
>> happens frequently that no
>> cell gets highlighted at all (or perhaps the wrong one is highlighted
>> but not visible at
>> the current scroll position)
>>
>> - Cells are sometimes a pixel different in height
>>
>> Haven't been able to find a pattern to this yet, it happens with the
>> default cell renderer
>> when it is styled with some fancy borders. Very noticable when
>> holding cursor down because
>> the borders jitter (create a border with an inset of 1 or 2 pixels so
>> there should be a fixed
>> gap between the cells, the gap will sometimes be a pixel larger than
>> usual).
>>
>> It doesn't seem to be content related as a cell that is a pixel too
>> large in the upper half
>> of the ListView can appear regular size in the bottom half of the
>> ListView.
>>
>> ....
>>
>> There are probably more I forgot to list or already worked around and
>> forgot about (I seem
>> to remember constructing a ListView, not adding it to Scene, but
>> populating it and selecting
>> an item and calling scrollTo, and THEN adding it to the Scene works
>> very poorly as well).
>>
>> Anyway... I'm a bit worried that fixes for these are now over a year
>> away... I don't really need
>> much (just a scrollbar, some same height, same width custom cells,
>> nicely stacked on top of each
>> other reacting to cursor input) but I just keep running into above
>> problems during normal use
>> of the app.
>>
>> Can I help get these debugged or am I on my own?
>>
>> --John
>>
>
>
More information about the openjfx-dev
mailing list