File tree 4 files changed +35
-0
lines changed
modules/javafx.controls/src
main/java/javafx/scene/control
test/java/test/javafx/scene/control
4 files changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -357,6 +357,7 @@ public void changed(
357
357
358
358
/** {@inheritDoc} */
359
359
@ Override public void startEdit () {
360
+ if (isEditing ()) return ;
360
361
final ListView <T > list = getListView ();
361
362
if (!isEditable () || (list != null && ! list .isEditable ())) {
362
363
return ;
Original file line number Diff line number Diff line change @@ -304,6 +304,7 @@ private ReadOnlyObjectWrapper<TableView<S>> tableViewPropertyImpl() {
304
304
305
305
/** {@inheritDoc} */
306
306
@ Override public void startEdit () {
307
+ if (isEditing ()) return ;
307
308
final TableView <S > table = getTableView ();
308
309
final TableColumn <S ,T > column = getTableColumn ();
309
310
final TableRow <S > row = getTableRow ();
Original file line number Diff line number Diff line change @@ -672,6 +672,17 @@ protected void assertInRangeState(int index) {
672
672
assertTrue (called [0 ]);
673
673
}
674
674
675
+ @ Test public void editCellDoesNotFireEventWhileAlreadyEditing () {
676
+ list .setEditable (true );
677
+ cell .updateListView (list );
678
+ cell .updateIndex (2 );
679
+ cell .startEdit ();
680
+ List <EditEvent <?>> events = new ArrayList <>();
681
+ list .setOnEditStart (events ::add );
682
+ cell .startEdit ();
683
+ assertEquals ("startEdit must not fire event while editing" , 0 , events .size ());
684
+ }
685
+
675
686
// commitEdit()
676
687
@ Test public void commitWhenListIsNullIsOK () {
677
688
cell .updateIndex (1 );
Original file line number Diff line number Diff line change @@ -529,6 +529,28 @@ public void testEditCancelMemoryLeakAfterRemoveEditingItem() {
529
529
assertEquals ("item must be gc'ed" , null , itemRef .get ());
530
530
}
531
531
532
+ @ Test
533
+ public void testEditStartFiresEvent () {
534
+ setupForEditing ();
535
+ cell .updateIndex (1 );
536
+ List <CellEditEvent <?, ?>> events = new ArrayList <>();
537
+ editingColumn .setOnEditStart (events ::add );
538
+ cell .startEdit ();
539
+ assertEquals ("startEdit must fire" , 1 , events .size ());
540
+ }
541
+
542
+ @ Test
543
+ public void testEditStartDoesNotFireEventWhileEditing () {
544
+ setupForEditing ();
545
+ cell .updateIndex (1 );
546
+ cell .startEdit ();
547
+ List <CellEditEvent <?, ?>> events = new ArrayList <>();
548
+ editingColumn .setOnEditStart (events ::add );
549
+ cell .startEdit ();
550
+ assertEquals ("startEdit must not fire while editing" , 0 , events .size ());
551
+ }
552
+
553
+
532
554
/**
533
555
* Test that cell.cancelEdit can switch table editing off
534
556
* even if a subclass violates its contract.
You can’t perform that action at this time.
0 commit comments