Bei deinem Window simu vermute ich, dass - wenn du du beim Inspector oben von “ID” zu dem “Zahnrad” wechselt das Fenester mit aktiviertem Implicit Instance konfiguriert hast.
Ich nehme jetzt einfach mal an, dass dort dann (Slider) Controls drauf sind ausliest, z.B. mit Label1.Text = Simu.Slider1.Value.ToString
Implicit Instance bedeutet, dass das Fenster automatisch instanziiert (und somit auch angezeigt) wird.
Du machst an einer Stelle dann:
simu.hide
simu.close
Das heisst: Fenster wird nicht sichtbar UND du schliesst das Fenster ganz (Instanz geht weg).
Alsbald später dann irgendwo wieder ein z.B. Label1.Text = Simu.Slider1.Value.ToString folgt heisst das: Simu.___ → oh, es gibt dieses Fenster (noch nicht | nicht mehr) → Xojo erzeugt es wie gewünscht automatisch dank dem Implicit Instance.
Das kannst du problemlos auch unter macOS nachvollziehen - es funktioniert wie erwartet (aber nicht wie von dir gewünscht):
simu.xojo_binary_project.zip (5.9 KB)
Im Window1.Open habe ich dein Code Snipplet von oben eingefügt. Eigentlich erwartest du, dass das Fenster “Simu” unsichtbar ist.
Dennoch ist/wird es sichtbar. Du kannst hier das “Simu”-Fenster noch so oft schliessen - es öffnet sich sofort wieder (da Timer darauf zugreift).
Simple Lösung hier:
// NICHT SCHLIESSEN, damit die Instanz dauerhaft
// ausgeblendet und somit nicht sichtbar bleibt
'simu.close
Einfach super gefährlich dieses standardmässig aktivierten Implicit Instance Verhalten…
Ich würde weiterhin empfehlen, eine Property (auf Window1) für das Fenster zu setzen, und es nur unter macOS selber mit new simu zu instanziieren.
Weil dann merkst du sehr schnell, wenn du “aus Versehen” darauf zugreifst - unter Linux würdest du dann erwarten, dass (Window1).mysimuwindow immer nil ist (da nie unter Linux instanziiert) - ein (Window1).mysimuwindow.Slider1.Value.ToString würde dann die erwartete Nil Object Exception geben.
Kurz und knapp: Implicit Instance ist zwar einfach und praktisch - aber auch sehr gefährlich und super anfällig für solche selbst verursachten “Bugs”… tu dir einen Gefallen und kontrolliere selber, welche Fenster du instanziierst und anzeigst.
Und wenn nicht - dann einfach das simu.close auskommentieren und es sollte vermutlich auch so funktionieren. Aber halt unschön, da dieses Fenster bei dir unter Linux ja offenbar gar nicht erst gewünscht ist - es aber doch immer da ist.