[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: RFR: 8264127: ListCell editing status is true, when index changes while editing
From: Florian Kirmaier <fkirmaier () openjdk ! java ! net>
Date: 2021-03-31 9:28:09
Message-ID: 4sMuGaAW87f-lxLMt-13WyjuGsEZpuv3SAtgZnKd-VI=.17ae6bc1-b071-46eb-80c1-6216909d0642 () github ! com
[Download RAW message or body]
On Fri, 26 Mar 2021 12:26:53 GMT, Jeanette Winzenburg <fastegal@openjdk.org> wrote:
> > To clarify, this with happening with ListViews in production code.
> > In some conditions, the status of a single cell doesn't update. The effect is, \
> > that a Cell is stuck in the Editing mode. If I remember correctly, it was \
> > irreversible stuck. It happened rarely, it might be connected to cells with \
> > variable sizes.
> > Handling the logic from the ListView seems wrong to me, I think the ListCell \
> > should update its state automatically dependent of the properties. But I wouldn't \
> > know where to add it in the ListView. If that's how it's done in the other \
> > cell-based components, then it would make sense and the code more linear. I'm not \
> > really opinionated on how to solve it, just went for the simplest fix I've found.
>
> >
> > Handling the logic from the ListView seems wrong to me,
>
> looks like I was unclear, because that's a 100% me-too :)
>
> Reformulating my second sentence in test snippets:
>
> A:
> cell.updateIndex(1);
> list.edit(1);
> cell.updateIndex(0);
> // failing/passing before/after fix
> assertFalse("cell re-use must update cell editing state" , cell.isEditing());
>
> B:
> List<EditEvent> events = new ArrayList<EditEvent>();
> list.setOnEditCancel(e -> {
> events.add(e);
> });
> .... setup test state as in A
> // passing/failing before/after fix
> assertTrue("cell re-use must not trigger edit events", events.isEmpty());
>
> C:
> .... setup test state as in A
> // passing/passing before/after fix
> assertEquals("cell re-use must not change list editing state", 1, \
> list.getEditingIndex);
> My question was, whether we agree on B. My wondering was about C passing in the \
> light of B failing.
I don't think B is right.
I would expect a editCancel event when the index of an editing cell is changed.
If there would be another cell, which will get the index 1 (which isn't the case in \
this artifical test) then i would expect another editStart event.
On the perspective of the ListView, the index never changes, but it's more relevant \
that some of the cells cancel/start the editing. If one would want to avoid the \
cancelEdit, when the index is not changing, then the solution should be to make sure, \
the index of editing cells never changes, which isn't the scope of this PR.
-------------
PR: https://git.openjdk.java.net/jfx/pull/441
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic