Open ValeriusGC opened 6 years ago
When the first replaced view are main view all is OK:
class ReplaceViewApp : App() { override val primaryView = ReplaceView1::class } fun main(args: Array<String>) { Application.launch(ReplaceViewApp::class.java, *args) } class ReplaceView1: View() { override val root = vbox { button("Go to MyView2") { action { replaceWith(ReplaceView2::class, ViewTransition.Slide(0.3.seconds, LEFT)) } } } override fun onDock() { println("Docking MyView1!") } override fun onUndock() { println("Undocking MyView1!") } } class ReplaceView2: View() { override val root = vbox { button("Go to MyView1") { action { replaceWith(ReplaceView1::class, ViewTransition.Slide(0.3.seconds, LEFT)) } } } override fun onDock() { println("Docking MyView2!") } override fun onUndock() { println("Undocking MyView2!") } }
here is the output: Docking MyView1! Undocking MyView1! Docking MyView2! Undocking MyView2! Docking MyView1! Undocking MyView1! Docking MyView2! Undocking MyView2! Docking MyView1!
But if all replaced views are secondary ones then repeated onDock for first view is not called after replacing:
onDock
// Here is the Main View now class MainReplaceView : View() { override val root = vbox { button("Open modal View1") { action { find<ReplaceView1>().openModal() } } } } // Look! class ReplaceViewApp : App() { override val primaryView = MainReplaceView::class } fun main(args: Array<String>) { Application.launch(ReplaceViewApp::class.java, *args) } class ReplaceView1: View() { override val root = vbox { button("Go to MyView2") { action { replaceWith(ReplaceView2::class, ViewTransition.Slide(0.3.seconds, LEFT)) } } } override fun onDock() { println("Docking MyView1!") } override fun onUndock() { println("Undocking MyView1!") } } class ReplaceView2: View() { override val root = vbox { button("Go to MyView1") { action { replaceWith(ReplaceView1::class, ViewTransition.Slide(0.3.seconds, LEFT)) } } } override fun onDock() { println("Docking MyView2!") } override fun onUndock() { println("Undocking MyView2!") } }
Here is output now: Docking MyView1! Undocking MyView1! Docking MyView2! Undocking MyView2! Undocking MyView1! Docking MyView2! Undocking MyView2! Undocking MyView1! Docking MyView2!
Yes, I have the same problem !
When the first replaced view are main view all is OK:
But if all replaced views are secondary ones then repeated
onDock
for first view is not called after replacing: