I am trying to understand what you mean. Since I'm talking about 2 concurrent Morphs, I implemented your remarks like this:
MainConsole demoButtonClicked morph := ModelConsole new. self modelConsole: morph. "handshake" collapsedMorph := self myPackageCollapse. morph mainConsole: self. "handshake" morph collapsedConsole: collapsedMorph. "handshake"
ModelConsole xButtonClicked | collapsedMorph expandedMorph | "close all running Modelprocessors" " to be defined! " "close own Modelprocessor" self mainConsole isNil ifFalse: [ expandedMorph := self mainConsole. collapsedMorph := self collapsedConsole. "uncollapse MainConsole" collapsedMorph collapseOrExpand. "release handshakes" expandedMorph modelConsole: nil. self mainConsole: nil]. "Close ModelConsole" ^self currentWorld removeMorph: self
This really solves the problem, *except* for the following situation: Step 1: open the MainConsole Step 2: MainConsole > demoButtonClicked: the ModelConsole opens, the MainConsole collapses *Step 3*: click on the - sign of the collapsed MainConsole to uncollapse it *Step 4*: MainConsole > minimizeButtonClicked: to collapse it again Step 5: ModelConsole > xButtonClicked: the ModelConsole closes, the MainConsole opens, *but* an artefact of the collapsed MainConsole stays on the screen. ..... Step 6: click on the - sign of the artefact and it disappears ..... Step 7: MainConsole > exitButtonClicked: the MainConsole closes. ..... or: Step 6: MainConsole > exitButtonClicked: the MainConsole closes but the artefact stays *as active *MainConsole Step 7: click on the - sign of the collapsed MainConsole to uncollapse it Step 8: MainConsole > exitButtonClicked: the MainConsole closes.
Were: MainConsole > exitButtonClicked ^self currentWorld removeMorph: self
and: MainConsole > minimizeButtonClicked ^self collapse
So, much better but not perfect ......
Hi,
It's hard to tell what is wrong without interacting with your code. If you can put your code to SqueakSource3 then I or someone else might be able to help you. The only suggestion that comes to my mind by looking at the example above is that you can not only remove your console morph, but also the CollapsedMorph. Besides that, imho it's better to use the self delete, than to do things like self currentWorld removeMorph: self. In this way you can just do: morph delete. collapsedMorph delete. Nevertheless it's just a wild guess and I cannot tell anything without interacting with your app.
Best wishes, Mateusz