@@ -2,6 +2,8 @@ package com.github.hanseter.json.editor.ui
22
33import javafx.scene.control.TreeItem
44import javafx.scene.control.TreeTableView
5+ import javafx.scene.control.skin.TreeTableViewSkin
6+ import javafx.scene.control.skin.VirtualFlow
57import javafx.scene.input.KeyCode
68import javafx.scene.input.KeyEvent
79
@@ -48,6 +50,10 @@ object TreeTableNavigation {
4850
4951 }
5052
53+ private fun TreeTableView <* >.getVirtualFlow () = (this .skin as ? TreeTableViewSkin <* >)?.children
54+ ?.filterIsInstance<VirtualFlow <* >>()
55+ ?.firstOrNull()
56+
5157 private fun TreeTableView <* >.getSelected () =
5258 selectionModel.selectedCells.firstOrNull()?.treeItem
5359
@@ -86,29 +92,33 @@ object TreeTableNavigation {
8692 }
8793 }
8894
89- private fun TreeTableView <* >.scrollToCurrentRow () {
90- scrollTo(selectionModel.selectedIndex)
95+ private fun TreeTableView <* >.scrollToSelectedRow () {
96+ scrollToRow(selectionModel.selectedIndex)
97+ }
98+
99+ private fun TreeTableView <* >.scrollToRow (rowIndex : Int ) {
100+ getVirtualFlow()?.scrollTo(rowIndex)
91101 }
92102
93103 private fun TreeTableView <* >.selectFirst () {
94104 selectionModel.selectFirst()
95- scrollToCurrentRow ()
105+ scrollToSelectedRow ()
96106 }
97107
98108 private fun TreeTableView <* >.selectLast () {
99109 selectionModel.selectLast()
100- scrollToCurrentRow ()
110+ scrollToSelectedRow ()
101111 }
102112
103113
104114 private fun TreeTableView <* >.selectUp () {
105115 selectionModel.selectAboveCell()
106- scrollToCurrentRow ()
116+ scrollToSelectedRow ()
107117 }
108118
109119 private fun TreeTableView <* >.selectDown () {
110120 selectionModel.selectBelowCell()
111- scrollToCurrentRow ()
121+ scrollToSelectedRow ()
112122 }
113123
114124 private fun TreeTableView <* >.selectLeft () {
0 commit comments